我正在使用xmpp协议,ejabberd服务器和使用asmack库的安卓聊天应用程序。我想要显示好友的状态。但是无论伙伴是在线还是离线,它总是显示离线状态,并且无论伙伴是在线还是离线,availability.getMode()总是返回null,availability.isAvailable总是返回false。
这是我的代码。先谢谢你...
Roster roster = connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries)
{
System.out.println("Entry :"+entry);
Presence availability = roster.getPresence(entry.getUser());
Mode userMode = availability.getMode();
Log.e("TAG", ""+userMode+" availability :"+availability.isAvailable());
retrieveState_mode(availability.getMode(),availability.isAvailable());
}
public static int retrieveState_mode(Mode userMode, boolean isOnline) {
int userState = 0;
*//** 0 for offline, 1 for online, 2 for away,3 for busy*//*
if(userMode == Mode.dnd) {
userState = 3;
} else if (userMode == Mode.away || userMode == Mode.xa) {
userState = 2;
} else if (isOnline) {
userState = 1;
}
return userState;
}发布于 2014-11-02 22:05:30
在您的代码中,不要使用availability.getMode(),而要使用availabilty.getType()并检查它是否为Presence.Type.available。
https://stackoverflow.com/questions/23471494
复制相似问题