由于Smack的API版本不一样吧,以为会有个对应的GroupChat来处理聊天室(跟Chat处理普通聊天一样).可我错了,我没有找到这个类

翻了下API,最后发现只有采用MultiUserChat

获取服务器端聊天室信息:

public static void getConferenceRoom() throws XMPPException {if (!MultiUserChat.getHostedRooms(mAdaptee, "127.0.0.1").isEmpty()) {for (HostedRoom k : MultiUserChat.getHostedRooms(mAdaptee,"127.0.0.1")) {for (HostedRoom j : MultiUserChat.getHostedRooms(mAdaptee,k.getJid())) {RoomInfo info2 = MultiUserChat.getRoomInfo(mAdaptee,j.getJid());if (j.getJid().indexOf("@") > 0) {System.out.println("聊天室的名称是: " + j.getName()+ "\n JID是:" + j.getJid());System.out.println("aaNumber of occupants:"+ info2.getOccupantsCount());System.out.println("聊天室的描述:" + info2.getDescription());System.out.println("聊天室的主题:" + info2.getSubject());System.out.println("聊天室的JID:" + info2.getRoom());}}}}}

加入聊天室,获取聊天室的人数,监听消息的发送与接收,监听聊天室的动态:

public static void joinRoom() throws XMPPException{MultiUserChat multiUserChat = new MultiUserChat(mAdaptee, "minzujy@conference.127.0.0.1");multiUserChat.join("NiMei", "");multiUserChat.sendMessage("send message successful");// 发送消息System.out.println(multiUserChat.getOccupantsCount());// 聊天室人数Iterator<String> it = multiUserChat.getOccupants();while(it.hasNext()){// minzujy@conference.127.0.0.1/sushuo1// minzujy@conference.127.0.0.1/guohaiSystem.out.println(StringUtils.parseResource(it.next()));// 聊天室成员名字}multiUserChat.addMessageListener(new PacketListener() {@Overridepublic void processPacket(Packet packet) {Message message = (Message)packet;//接收来自聊天室的聊天信息System.out.println("收到聊天室消息=>" + StringUtils.parseResource(message.getFrom()) + ": "+message.getBody());}});multiUserChat.addParticipantStatusListener(new ParticipantStatusListener() {@Overridepublic void voiceRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void voiceGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void ownershipRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void ownershipGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void nicknameChanged(String participant, String newNickname) {// TODO Auto-generated method stubSystem.out.println(StringUtils.parseResource(participant) + " is now known as "+ newNickname +".");}@Overridepublic void moderatorRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void moderatorGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void membershipRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void membershipGranted(String participant) {// TODO Auto-generated method stub}@Overridepublic void left(String participant) {// TODO Auto-generated method stubSystem.out.println(StringUtils.parseResource(participant) + " has left the room.");}@Overridepublic void kicked(String participant, String actor, String reason) {// TODO Auto-generated method stub}@Overridepublic void joined(String participant) {// TODO Auto-generated method stubSystem.out.println(StringUtils.parseResource(participant) + " has joined the room.");}@Overridepublic void banned(String participant, String actor, String reason) {// TODO Auto-generated method stub}@Overridepublic void adminRevoked(String participant) {// TODO Auto-generated method stub}@Overridepublic void adminGranted(String participant) {// TODO Auto-generated method stub}});}

监听好友发送来的加入聊天室的邀请:

MultiUserChat.addInvitationListener(mAdaptee, new InvitationListener() {@Overridepublic void invitationReceived(org.jivesoftware.smack.Connection conn, String room,String inviter, String reason, String password, Message message) {MultiUserChat multiUserChat = new MultiUserChat(conn, room);System.out.println("收到来自 "+inviter+" 的聊天室邀请。邀请附带内容:"+reason);try {multiUserChat.join("HMM", password);} catch (XMPPException e) {System.out.println("加入聊天室失败");e.printStackTrace();}System.out.println("成功加入聊天室");multiUserChat.addMessageListener(new PacketListener() {@Overridepublic void processPacket(Packet packet) {Message message = (Message)packet;//接收来自聊天室的聊天信息System.out.println(message.getFrom() + ":" + message.getBody());}});}});



更多相关文章

  1. Android中四大组件概述以及各自作用
  2. Android中的搜索框(SearchView)的功能和用法
  3. Android中ConnectivityManager监听网络状态
  4. android 广播BroadcastReveicer详解
  5. Android(安卓)之事件处理(二)基于监听的事件处理
  6. Android第一行代码第二版:5.3.2发送有序广播,在安卓8上无法接收广
  7. Recyclview实现仿京东淘宝金刚位带滚动进度条
  8. android设置屏幕方向与自动感应切换
  9. Android(安卓)App开机自动启动

随机推荐

  1. android studio 对android app签名
  2. Android compileSdkVersion 23 导致apach
  3. 电话拨号器
  4. 厦门蒙发利科技(集团)股份有限公司面试题
  5. react native修改APP的名称和图标
  6. LogCat中不输出任何的信息
  7. Android sdk配置 常见问题及处理方法
  8. 【android】 Unable to open content: fi
  9. Android AIDL 教程 (一)—— 简单的示例
  10. Android中Toast的用法简介