XMPP系列之Smack(4.1.3 )(三)獲取已加入的聊天室列表

XMPP系列之Smack(4.1.3)(一)登錄服務器
XMPP系列之Smack(4.1.3)(二)獲取好友分組
XMPP系列之Smack(4.1.3 )(四)創建聊天室
本篇講述如何獲取openfire服務器上已加入的聊天室列表,期間事情比較多所以間隔有點遠,最近閑下來繼續做這個計劃已久的XMPP項目。

獲取列表很簡單,幾行代碼就能搞定,主要通過獲取MultiUserChatManager這個類來獲得我們所需要的東西,這個類繼承一個抽象類ManagerManager中主要實現了獲取XMPPConnection這個連接對象,所以實例化時不能通過new的方式,具體實例化方式如下

XMPPTCPConnection connection = XMPPConnectionManager.getInstance().getConnection();
MultiUserChatManager mMultiUserChatManager = MultiUserChatManager.getInstanceFor(connection);

拿到mMultiUserChatManager對象之后調用以下方法即可獲取所加入的所有的房間列表,這里返回的是一個List集合,里面存放的是entity ID

Paste_Image.png

接著還要再調用getRoomInfo這個方法來獲取具體的房間名

Paste_Image.png

這里貼出我的代碼來做個示范

List<String> tempRoomList = mMultiUserChatManager.getJoinedRooms(mUserVo.jid);
            for (String roomId : tempRoomList) {
                RoomInfo roomInfo = mMultiUserChatManager.getRoomInfo(roomId);
                GroupEntityVo groupVo = new GroupEntityVo();
                groupVo.roomJid = roomInfo.getRoom();
                groupVo.roomName = roomInfo.getName();
                mGroupList.add(groupVo);
            }

我把獲得的聊天室的信息做了進一步封裝,統一放到List<GroupEntityVo>中管理。
如果想要獲得服務器上所有的聊天室列表可以調用下面的方法

List<HostedRoom> hostedRoomList = mMultiUserChatManager.getHostedRooms(mMultiUserChatManager.getServiceNames().get(0));
            for (HostedRoom room : hostedRoomList) {
                String roomName = room.getName();
                String roomJid = room.getJid();
                GroupEntityVo groupVo = new GroupEntityVo();
                groupVo.roomJid = roomJid;
                groupVo.roomName = roomName;
                mGroupList.add(groupVo);
            }

具體如何展現這個列表就看大家的需求了,下一篇會寫如何創建聊天室的方法,畢竟篇幅多了大家看著會煩躁

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容