【发布时间】:2014-07-07 07:07:45
【问题描述】:
我正在尝试使用 asmack 在我的聊天名单中获取用户的存在。 据我了解, Presece.getType() 应该返回以下存在类型之一:
每个出席信息包都有一个类型,它是以下值之一:
available -- (Default) indicates the user is available to receive messages.
unavailable -- the user is unavailable to receive messages.
subscribe -- request subscription to recipient's presence.
subscribed -- grant subscription to sender's presence.
unsubscribe -- request removal of subscription to sender's presence.
unsubscribed -- grant removal of subscription to sender's presence.
error -- the presence packet contains an error message.
在我的在线用户的存在对象上使用 Presence.getType() 给了我这个:
Log.e("Presence?",myRoster.getPresence(entry.getUser()).getType().toString());
Unavailable
但是,在同一用户上使用 Presence.isAvailable() 会给我:
Log.e("Presence?",Boolean.toString(myRoster.getPresence(entry.getUser()).isAvailable()));
True
根据以下定义,getType() 和 isAvailable() 不应该返回相同的结果吗?
public Presence.Type getType()
返回此出席信息包的类型。
public boolean isAvailable()
如果存在类型可用(在线),则返回 true;如果用户不可用(离线),或者这是订阅操作中涉及的存在数据包,则返回 false。这是一种等效于 getType() == Presence.Type.available 的便捷方法。
我错过了什么?两者有什么区别?
【问题讨论】: