Java smack / Android asmack RosterListener

发布于 2024-11-08 15:05:00 字数 430 浏览 5 评论 0原文

我一直在寻找很多。但找不到任何东西。我需要刷新与名册侦听器的联系人状态。 (离线/在线)。创建名册时,我这样做:

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

userstatus 是一个向量字符串,然后我从中创建一个字符串数组。在我的主程序中,我只是检查这个搅拌数组的离线或在线状态。但是如果用户离线/在线该怎么办。我到底应该把监听器放在哪里以及如何使用它?

I've been searching alot. but couldn't find anything. I need to refresh state of the contacts with rosterlistener. (offline/online). WHen creating roster i do:

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

userstatus is a vector string, then i make a string array from it. In my main program i just check this stirng array for the offline or online. But what to do if user goes offline/online. WHere exactly i must put the listener and how exactly to use it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可可 2024-11-15 15:05:00

您实现 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);
    }
});

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

要在状态更新后获取用户当前的“最佳状态”,请查询花名册:

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

这将返回具有最高优先级和可用性的用户的状态值。

You implement a RosterListener and make use of the presenceChanged() method. Here's sample code exactly as it appears in the 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);
    }
});

Note that the JavaDoc suggests not using the presence received in the change event but checking for the best presence available each time:

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文