簡體   English   中英

Java smack / Android asmack RosterListener

[英]Java smack / Android asmack RosterListener

我一直在搜尋。 但找不到任何東西。 我需要使用rosterlistener刷新聯系人的狀態。 (離線/在線)。 創建名單時,我會這樣做:

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

userstatus是一個向量字符串,然后我從中創建一個字符串數組。 在我的主程序中,我只是在離線或在線檢查此攪拌陣列。 但是如果用戶離線/在線該怎么辦。 我到底在哪里必須放置監聽器,以及如何正確使用它?

您實現一個RosterListener並利用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建議不要使用在change事件中收到的狀態,而是每次檢查最佳狀態:

要在狀態更新后獲得用戶的當前“最佳狀態”,請查詢名冊:

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

這將為優先級和可用性最高的用戶返回狀態值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM