2013-03-06 57 views

回答

2

我可以通过SMACK API使用XMPP连接的Rooster来获得QuickBlox聊天模块的在线用户。检查这个答案。

Can I get online users in my friend list via Smack?

您需要的在线用户进行聊天模块或其它一个?

干杯!

+0

感谢您的帮助条目形式名册添加用户名册。我得到了解决方案。但又有一个帮助,如何从QBSession获得XMPPConnection实例? – UdhayKannu 2013-03-07 05:07:57

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("[email protected]"); 
    if (presence.getType() == Presence.Type.AVAILABLE) { 
     // Tom is online... 
     } 

通过使用presence.getMode()方法来获取用户的方式。模式是enum,其值可以是聊天,可用,离开,xa,dnd。

0

XMPPConnection.addConnectionCreationListener(新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()); 
     } 

    } 
}); 
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()

ArrayList<String> friends = new ArrayList<String>(); 
    Collection<RosterEntry> entries = roster.getEntries(); 
    for (RosterEntry entry : entries) { 
    friends.add(entry.getName()); 
    } 
相关问题