我正在尝试使用XMPP(aSmack)实现android聊天应用程序。我检查我的代码是否正确,可以登录,注册。现在我正在尝试获取所有用户信息(离线/在线/离开/等)我尝试通过Presence使用,但我无法成功。当 xmpp 连接正常并且用户登录成功时,我通过以下方式调用 Presence
if (connection != null && connection.isConnected()) {
Presence presence = new Presence(Presence.Type.available);
presence.setStatus("I’m available");
connection.sendPacket(presence);
Log.w("type", "I’m available");
}
调用此函数后,我尝试获取所有用户信息。我的花名册代码是:
Roster roster = connection.getRoster();
// Get all rosters
Collection<RosterEntry> entries = roster.getEntries();
Log.w("Size ", "are"+entries.size());
// loop through
for (RosterEntry entry : entries) {
// example: get presence, type, mode, status
Presence entryPresence = roster.getPresence(entry.getUser());
Presence.Type userType = entryPresence.getType();
Presence.Mode mode = entryPresence.getMode();
String status = entryPresence.getStatus();
Log.w("mode ", "are"+mode);
Log.w("status ", "are"+status);
Log.w("mode ", "are"+entryPresence.isAvailable());
}
但是我的问题,我一直得到一个条目大小,我是谁.没有我的模式显示一直假(这意味着我不可用)。我不明白这是什么问题。我需要处理服务器配置。再次.或我的代码是错误的。请帮助我如何解决这两个问题。谢谢大家。
您可以使用连接对象从服务器获取所有名单
Roster roster = mConnection.getRoster();
其中mConnection
是 XMPP 连接对象。还应将名单侦听器添加到名单对象。
有关更多信息,您可以参考此链接。