art*_*ros 2 java android listener smack
我一直在寻找很多.但找不到任何东西.我需要用rosterlistener刷新联系人的状态.(离线/在线).创建名单时,我做:
Presence presence = roster.getPresence(r.getUser());
if(presence.isAvailable()){
userstatus.add("online");
}else{
userstatus.add("offline");
}
Run Code Online (Sandbox Code Playgroud)
userstatus是一个矢量字符串,然后我从中创建一个字符串数组.在我的主程序中,我只是检查这个搅拌阵列的离线或在线.但是,如果用户离线/在线,该怎么办.究竟我必须把听众以及如何使用它?
您实现RosterListener并使用该presenceChanged()方法.这里的示例代码与Smack文档中显示的完全相同.
Roster roster = con.getRoster();
roster.addRosterListener(new RosterListener() {
// Ignored events public void entriesAdded(Collection<String> addresses) {}
public void entriesDeleted(Collection<String> addresses) {}
public void entriesUpdated(Collection<String> addresses) {}
public void presenceChanged(Presence presence) {
System.out.println("Presence changed: " + presence.getFrom() + " " + presence);
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,JavaDoc建议不要使用更改事件中收到的状态,而是每次检查可用的最佳状态:
要在状态更新后获得用户当前的"最佳状态",请查询名单:
String user = presence.getFrom();
Presence bestPresence = roster.getPresence(user);
Run Code Online (Sandbox Code Playgroud)
这将返回具有最高优先级和可用性的用户的在线值.
| 归档时间: |
|
| 查看次数: |
5399 次 |
| 最近记录: |