我正在尝试使用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,或者如果这是订阅操作中涉及的在线数据包,则返回false。这是一个等同于getType()== Presence.Type.available的便捷方法。
我错过了什么?这两者之间的区别是什么?
答案 0 :(得分:0)
如果查看来源,您会发现
public boolean isAvailable() {
return type == Type.available;
}
<{3}}状态
这是一个等同于getType()==的便捷方法 Presence.Type.available。