2013-03-06 69 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()); 
    } 
相關問題