gpt4 book ai didi

Java smack/Android asmack RosterListener

转载 作者:太空狗 更新时间:2023-10-29 16:24:18 25 4
gpt4 key购买 nike

我一直在寻找。但找不到任何东西。我需要用 rosterlistener 刷新联系人的状态。 (离线/在线)。创建花名册时我会这样做:

Presence presence = roster.getPresence(r.getUser());
if(presence.isAvailable()){
userstatus.add("online");
}else{
userstatus.add("offline");
}

userstatus 是一个 vector 字符串,然后我从中创建一个字符串数组。在我的主程序中,我只是检查这个 stirng 数组的离线或在线状态。但是如果用户离线/在线怎么办。我必须将监听器放在哪里以及如何使用它?

最佳答案

您实现一个RosterListener 并使用presenceChanged()方法。这是与 Smack documentation 中完全相同的示例代码.

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);
}
});

请注意,JavaDoc 建议不要使用在更改事件中收到的状态,而是每次检查可用的最佳状态:

To get the current "best presence" for a user after the presence update, query the roster:

String user = presence.getFrom();
Presence bestPresence = roster.getPresence(user);

That will return the presence value for the user with the highest priority and availability.

关于Java smack/Android asmack RosterListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6033806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com