用户存在值从 asmack 变为空
Posted
技术标签:
【中文标题】用户存在值从 asmack 变为空【英文标题】:User presence value is coming null from asmack 【发布时间】:2014-10-24 07:55:50 【问题描述】:我正在构建一个带有 open fire server 和 asmack 在 android 中的聊天应用程序。 我正在使用来自模拟器的 2 个用户(让 A 和 B)和来自 spark 的另外 1 个用户(让 C)连接到开火服务器。
另外,我为用户存在值的任何变化添加了名册侦听器。
因此,当应用程序正在侦听名册更新时,来自模拟器(即来自 asmack api)的用户的 presence.getstatus 值为 null。但我正在获取来自 spark 的用户的状态值。
以下是为状态更改实现的代码。
public void presenceChanged(Presence presence)
String Name="",Status="";
Log.d(TAG, "Presence value = "+presence);
Log.d(TAG, "Presence getfrom value = "+presence.getFrom());
Log.d(TAG, "Presence getstatus value = "+presence.getStatus());
Log.d(TAG, "Presence getto value = "+presence.getTo());
以下是 spark 用户的日志。
Presence value = available (Online)
Presence getfrom value = swathi@btp121374/Spark 2.6.3
Presence getstatus value = Online
Presence getto value = kpvsrkp@btp121374
以下是来自 asmack android 的用户日志。
Presence value = available
Presence getfrom value = ganesh@btp121374/Smack
Presence getstatus value = null
Presence getto value = kpvsrkp@btp121374
所以这里的问题是为什么 asmack 用户的 presence.getStatus() 为 null。
Presence getstatus value = null
有人可以告诉我还需要做什么来获取 asmack 用户的 presence.getStatus() 值。
【问题讨论】:
哪个 Smack 版本?尝试启用 SmackConfiguration.DEBUG 并查看 Smack 收到的出席信息节是否包含状态。 我正在使用这个 asmack-android-4.jar。现在,一旦与 openfire 的连接完成,我就可以通过设置存在来从 asmack 获取状态。真的需要吗? 我现在没有asmack-android-4.jar,你确定jar名里没有minor version和patch level version? 【参考方案1】:使用此功能获取状态 存在 mPresence = YourXmppConnection .getRoster().getPresence(Userjid); mPresence.getType() 提供用户的可用性。对照 Presence.Type.available 检查它
【讨论】:
【参考方案2】:new AsyncTask<Object,Object,Object>()
@Override
protected Object doInBackground(Object[] params)
Presence availability1=roster.getPresence("aaaaedmn1474531771@staging.cardamomapp.com");
return availability1;
@Override
protected void onPostExecute(Object object)
super.onPostExecute(object);
Presence data=(Presence)object;
Log.d("Presence-----","Presence========>>"+data.getStatus());
sendBroadCast(""+data.getStatus());
.execute();
【讨论】:
以上是关于用户存在值从 asmack 变为空的主要内容,如果未能解决你的问题,请参考以下文章
i 整数的 cmd.ExecuteNonQuery 值从 0 变为 -1
从 NSDictionary 设置时,BOOL 值从 NO 变为 Yes