availability.getMode() 和 availability.isAvailable 总是分别返回 null 和 false
Posted
技术标签:
【中文标题】availability.getMode() 和 availability.isAvailable 总是分别返回 null 和 false【英文标题】:availability.getMode() and availability.isAvailable always returns null and false respectively 【发布时间】:2014-05-05 11:37:06 【问题描述】:我正在使用 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;
【问题讨论】:
你能获得参赛作品吗?我正在尝试获取用户列表,但 roster.getEntries() 方法总是向我返回 null,我们是否必须在 ejabberd 面板/服务器上进行任何设置? 【参考方案1】:在您的代码中而不是使用availability.getMode() 使用availabilty.getType() 并检查它是否是Presence.Type.available。
【讨论】:
以上是关于availability.getMode() 和 availability.isAvailable 总是分别返回 null 和 false的主要内容,如果未能解决你的问题,请参考以下文章
第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等
shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()