如何在android上使用smack获得openfire xmpp服务器上的所有用户



我正在使用smack和openfire开发android聊天应用程序,现在我面临的问题是显示所有用户的列表,以便这些用户可以被邀请聊天,我尝试使用下面的代码花名册,但花名册条目大小始终为零。当我正确登录。以下是我的代码片段:

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

这是因为花名册需要一段时间来加载。您可以:

  1. 使用rosterloaddlistener。
  2. 重新加载并等待:if (!roster.isLoaded()) roster.reloadAndWait();
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());
            }
        }
    });

最新更新