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

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

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

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

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

Paste_Image.png

接著還要再調(diào)用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);
            }

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容