使用Asmack的Android - 如何在连接到XMPP时获取当前状态信息?

时间:2014-03-11 12:22:18

标签: android xmpp smack asmack

我有一个基于asmack的客户端,我连接并进行身份验证,然后我获取了一个名单,我附加了一个监听器并且我自己设置了。

听众正确地接受我连接后对状态所做的任何更改,但是我无法找到一种方法来获取我名单上所有条目的当前状态。

我尝试发送Presence.Type.subscribe数据包,我尝试使用Roster#reload()并尝试了以下内容:

for (RosterEntry entry : mRoster.getEntries()) {
   Presence presence = mRoster.getPresence( entry.getUser() );
   ...
}

(如果我记录上面的状态对象,则显示为'不可用')

当我从mRoster.getPresence(handle)收到回调时,我还在entriesUpdated内尝试了Roster#reload,并且在循环Roster#getEntries时,我得到了有效的用户ID&#39 ; s但存在模式为null,并且每个条目的类型不可用

有没有办法可以提示服务器向我发送当前的远程信息?

2 个答案:

答案 0 :(得分:1)

怎么样?
Roster.getEntries()

答案 1 :(得分:0)

我已经解决了这个问题,看来我设置配置的例子的一部分是不正确的。

ConnectionConfiguration中加入以下设置会导致问题:

config.setSendPresence(false);

删除后,初始状态正确更新