2015-10-24 53 views
1

我使用smack和openfire開發android中的聊天應用程序,現在我面臨的問題是要顯示所有用戶的列表,以便這些用戶可以被邀請進行聊天,我使用下面的代碼嘗試使用名單,但是名冊條目大小始終爲零。雖然我已正確登錄。以下是我的代碼段。如何讓所有的用戶在Android上使用smack的openfire xmpp服務器?

Roster roster =Roster.getInstanceFor(xmppConnection); 
     Collection<RosterEntry> entries = roster.getEntries(); 
     for (RosterEntry entry : entries) { 
      System.out.println(entry); 
     } 
+0

看看我回答這個帖子http://stackoverflow.com/questions/36471325/getting-all-users-from-an-openfire-server-using-smack- android/39868514#39868514 –

回答

0
Roster roster = Roster.getInstanceFor(connection_obj); 
    roster.addRosterLoadedListener(new RosterLoadedListener() { 
     @Override 
     public void onRosterLoaded(Roster roster) { 
      Set<RosterEntry> entries = roster.getEntries(); 
      for (RosterEntry entry : entries) { 
       Log.d("XMPPChatDemoActivity", "Name: "+entry.getName()); 
       Log.d("XMPPChatDemoActivity", "Id: " + entry.getUser()); 
       Presence entryPresence =roster.getPresence(entry.getUser()); 
       Log.d("XMPPChatDemoActivity", "Presence Status: " +  entryPresence.getStatus()); 
       Log.d("XMPPChatDemoActivity", "Presence Type: " + entryPresence.getType()); 
      } 
     } 
    }); 
+0

添加一些解釋和回答,以解決這個問題的答案OP在修復當前問題 –

+0

這是因爲當您嘗試訪問名單條目時,它沒有什麼必須添加偵聽器。所以它會通知你,你可以在花名冊中加載花名冊中的條目。 –

1

這是因爲需要名冊要加載一段時間。您可以:

  1. 使用RosterLoadedListener
  2. 刷新等待:if (!roster.isLoaded()) roster.reloadAndWait();
相關問題