Kann ich Online-Nutzer in meiner Freundesliste über Smack bekommen?
Frage
Kann ich Online-Nutzer in meiner Freundesliste über Smack API? Ist es möglich?
Ich arbeite an app, die Chat zwischen Benutzern haben. Ich hatte erfolgreich Chat-Anwendung Beispiel erstellt nur Name von Freund und senden Chat eingeben, aber jetzt möchte ich Online-Freunde-Liste.
Lösung
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());
}
Andere Tipps
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());
}
}
});
So zu Beginn des Programms, dass XMPPConnection Zuhörer registrieren, in der Regel nehmen sie einige Sekunden Verbindungsobjekt zu empfangen. Aber es wird nur funktionieren, wenn Sie creatEntry nur in diesem Fall Hahn verwenden werden diese erstellten Benutzer sehen.
Um creat Eintrag mit Roster verwenden nächsten Code:
try {
rooster.createEntry("name", "user_id", null);
} catch (XMPPException e) {
e.printStackTrace();
}
Ich habe keine Gruppe verwenden, und mit Erfolg sehen Benutzer auf dem zweiten Gerät.
Presence presence = roster.getPresence("tom@jabber.org");
if (presence.getType() == Presence.Type.AVAILABLE) {
// Tom is online...
}
smackAndroid = SmackAndroid.init(this);
XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() {
@Override
public void connectionCreated(XMPPConnection connection) {
Log.i("hello", "receive xmpp connection : " + connection);
roster = connection.getRoster();
try {
roster.createEntry("2868254", "hello", null);
} catch (XMPPException e) {
e.printStackTrace();
} catch (NotLoggedInException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoResponseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotConnectedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow