2 juy19901128 juy19901128 于 2014.08.05 12:02 提问

asmack获取好友状态Type可以,Mode却在available获取为null

asmack在登陆设置Presence.Type.available、Presence.Mode.available后,Roster获得presence没有Mode数据。

    Presence presence = new Presence(Presence.Type.available, "online", 0, Presence.Mode.available);
    FlyChatManager.instance().Login(username, username.split("@")[0], presence);

下面是登陆函数

public boolean Login(String account, String password, Presence presence){
    if(account.length() < 1 || password.length() < 1){
        Log.i(TAG, "账号或密码过短!");
        return false;
    }

    XMPPConnection conn = FlyChatService.instance().getXMPPConnection();

    if(conn == null || !conn.isConnected()){
        Log.i(TAG, "连接器没初始化,或还没有和服务器连接上!");
        return false;
    }

    try {
        conn.login(account, password);
    } catch (XMPPException e) {
        e.printStackTrace();
    }

    conn.sendPacket(presence);

    return true;
}

RosterListener的监听回调函数

    @Override
public void presenceChanged(Presence presence) {
    String from = presence.getFrom();
    Log.i(TAG, "好友:" + from + "在线状态改变!");
    Presence bestPresence;

    if(nIsListenOneFriend){
        if(from.equals(nOneFriend) || from.split("/")[0].equals(nOneFriend)){
            bestPresence = nRoster.getPresence(from.split("/")[0]);
        }else{
            return;
        }
    }else{
        bestPresence = nRoster.getPresence(from);
    }
    android.os.Message msg = new android.os.Message();
    msg.what = 1;
    msg.obj = bestPresence;
    nUIHandler.sendMessage(msg);
}

通过presenceChanged函数得到的数据Log是
08-04 23:31:29.533: I/LogInActivity(2173): online0
08-04 23:31:29.533: I/LogInActivity(2173): 2222@192.168.10.251/Smack is online
08-04 23:31:29.533: I/LogInActivity(2173): mode = null

有大神出来解决一下,或者指点一下吗? 小弟先谢谢了!!

1个回答

juy19901128
juy19901128   2014.08.05 12:34

漏了一跳LOG
08-04 23:31:29.533: I/LogInActivity(2173):< presence id="1z929-10" to="1111@192.168.10.251/Smack" from="2222@192.168.10.251/Smack">online0

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!