我有一个基于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,并且每个条目的类型不可用
有没有办法可以提示服务器向我发送当前的远程信息?
答案 0 :(得分:1)
怎么样?
Roster.getEntries()
答案 1 :(得分:0)
我已经解决了这个问题,看来我设置配置的例子的一部分是不正确的。
在ConnectionConfiguration
中加入以下设置会导致问题:
config.setSendPresence(false);
删除后,初始状态正确更新