2015-10-24 81 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();
相关问题