我正在使用QuickBlox API创建聊天应用程序, 从示例应用程序我可以获得我的帐户中的所有列表用户。但我想只显示在线可用用户。如何检索在线可用用户?
答案 0 :(得分:2)
我可以使用XMPP连接的Rooster通过SMACK API获取QuickBlox聊天模块的在线用户。检查这个答案。
Can I get online users in my friend list via Smack?
您需要聊天模块的在线用户还是其他用户?
干杯!
答案 1 :(得分:1)
使用smack API为在线可用用户尝试此操作。 名册名单= 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());
}
检查用户是否在线(或)离线
Presence presence = roster.getPresence("tom@jabber.org");
if (presence.getType() == Presence.Type.AVAILABLE) {
// Tom is online...
}
通过使用presence.getMode()方法获取用户模式。模式是枚举,其值可以是聊天,可用,离开,xa,dnd。
答案 2 :(得分:0)
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());
}
}
});
答案 3 :(得分:0)
您可以按照以下方式执行此操作:
1-定义名册
private SmackAndroid smackAndroid;
private Roster roster;
2-在onCreate中,初始化smackAndroid并添加XMPPConnectionListener
smackAndroid = SmackAndroid.init(this);
XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() {
@Override
public void connectionCreated(Connection connection) {
roster = connection.getRoster();
}
});
3-您可以使用createEntry
将用户添加到名单 try {
roster.createEntry("UserId", "userName", new String[] { "Friends" });
} catch (XMPPException e) {
e.printStackTrace();
}
4-您可以使用getEntry()
获取Entries表单 ArrayList<String> friends = new ArrayList<String>();
Collection<RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries) {
friends.add(entry.getName());
}