Question

Puis-je obtenir en ligne les utilisateurs dans ma liste d'amis via l'API Smack? Est-il possible?

Je travaille sur l'application qui ont le chat entre les utilisateurs. J'avais créé avec succès exemple d'application chat, à saisir le nom d'un ami et d'envoyer le chat, mais maintenant je veux ma liste d'amis en ligne.

Était-ce utile?

La solution

Roster roster = xmppConnection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
Presence presence;

for(RosterEntry entry : entries) {
    presence = roster.getPresence(entry.getUser());

    System.out.println(entry.getUser());
    System.out.println(presence.getType().name());
    System.out.println(presence.getStatus());
}

Autres conseils

    XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() {

        @Override
        public void connectionCreated(Connection arg0) {
            Log.i(TAG, "receive xmpp connection : " + arg0);
            connection = arg0;
            roster = arg0.getRoster();

            Collection<RosterEntry> entries = roster.getEntries();
            Presence presence;

            Log.e(TAG, "user count" + entries.size());

            for (RosterEntry entry : entries) {
                presence = roster.getPresence(entry.getUser());

                Log.i(TAG, "" + entry.getUser());
                Log.i(TAG, "" + presence.getType().name());
                Log.i(TAG, "" + presence.getStatus());
            }

        }
    });

Ainsi, au début de votre programme du registre que l'auditeur de XMPPConnection, généralement, il prend quelques secondes pour recevoir l'objet de connexion. Mais il ne fonctionnera que si vous utiliserez creatEntry seulement dans ce coq de cas voir les utilisateurs créés.

Pour l'entrée creat en utilisant le code suivant Roster utiliser:

try {
    rooster.createEntry("name", "user_id", null);
} catch (XMPPException e) {
    e.printStackTrace();
}

Je n'utilise aucun groupe, et avec succès voir l'utilisateur sur le deuxième appareil.

scroll top