用户存在值从asmack变为空

时间:2014-10-24 07:55:50

标签: android xmpp smack asmack

我正在使用开放式服务器和asmack在android中构建聊天应用程序。 我正在连接两个用户(让A& B)来自模拟器的开放式服务器和另外一个来自spark的用户(Lets 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()值。

2 个答案:

答案 0 :(得分:0)

使用此功能获取状态 存在mPresence = YourXmppConnection                                     。.getRoster()getPresence(Userjid); mPresence.getType()提供用户的可用性。根据Presence.Type.available

进行检查

答案 1 :(得分:0)

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();