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
有大神出来解决一下,或者指点一下吗? 小弟先谢谢了!!
漏了一跳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