目前我正在使用 Xmpp SMACK API 工作聊天应用程序。但是当我调用 addrosterListener 时,我没有获得 Presence 当前状态。我必须引用 http://www.igniterealtime.org/builds/smack/docs/3.2.2/javadoc/org/jivesoftware/smack/RosterListener.html .请帮助我。
roster.addRosterListener(new RosterListener() {
@Override
public void presenceChanged(Presence presence) {
Log.d("pewsence ", "pewsence Status: " + presence.getFrom());
Log.d("pewsence ", "pewsence to Status: "
+ presence.getTo() + " " + presence);
// Called when the presence of a roster entry is
// changed
}
@Override
public void entriesUpdated(Collection<String> arg0) {
// Called when a roster entries are updated.
}
@Override
public void entriesDeleted(Collection<String> arg0) {
// Called when a roster entries are removed.
}
@Override
public void entriesAdded(Collection<String> arg0) {
// Called when a roster entries are added.
}
});
}
}
});
这个监听器是在创建 Activity 时调用的。我认为引用所有文档,当presense发生变化时会自动调用这个监听器。
提前致谢。
最佳答案
roster = connection.getRoster();
// Get all rosters
Log.i("roster", "roster=" + connection.isConnected() + "-" + roster);
Collection<RosterEntry> entries = roster.getEntries();
// loop through
for (RosterEntry entry : entries) {
Presence entryPresence = roster.getPresence(entry.getUser());
Presence.Type userType = entryPresence.getType();
}
使用此代码,您必须获取所有在线或离线用户。您可以与任何人聊天。
关于java - smack RosterListener 在 Android 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17991739/