我正在使用xmpp
协议,ejabberd
服务器和使用asmack
库来处理Android聊天应用程序。我想显示好友状态。但无论好友是在线还是离线,它始终显示离线状态,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;
}
答案 0 :(得分:0)
在代码中,而不是使用availability.getMode(),使用availabilitybilty.getType()并检查它是否为Presence.Type.available。