72MainActivity中群聊的监听
来源:互联网 发布:小米5标配版网络是几g 编辑:程序博客网 时间:2024/06/05 09:03
整体的框架如下:
实现GroupChangeListener接口,实现它的八个未实现的方法。
第一个:
onInvitationReceived:对方邀请你加入群聊。
@Override public void onInvitationReceived(String groupId, String groupName, String inviter, String reason) { boolean hasGroup = false; for (EMGroup group : EMGroupManager.getInstance().getAllGroups()) { if (group.getGroupId().equals(groupId)) { hasGroup = true; break; } } if (!hasGroup) return; // 被邀请 EMMessage msg = EMMessage.createReceiveMessage(Type.TXT); msg.setChatType(ChatType.GroupChat); msg.setFrom(inviter); msg.setTo(groupId); msg.setMsgId(UUID.randomUUID().toString()); msg.addBody(new TextMessageBody(inviter + "邀请你加入了群聊")); // 保存邀请消息 EMChatManager.getInstance().saveMessage(msg); // 提醒新消息 EMNotifier.getInstance(getApplicationContext()).notifyOnNewMsg(); runOnUiThread(new Runnable() { public void run() { updateUnreadLabel(); // 刷新ui if (currentTabIndex == 0) chatHistoryFragment.refresh(); if (CommonUtils.getTopActivity(MainActivity.this).equals( GroupsActivity.class.getName())) { GroupsActivity.instance.onResume(); } } }); }
更新UI必须放在主线程。
完整的:
/** * MyGroupChangeListener */ private class MyGroupChangeListener implements GroupChangeListener { @Override public void onInvitationReceived(String groupId, String groupName, String inviter, String reason) { boolean hasGroup = false; for (EMGroup group : EMGroupManager.getInstance().getAllGroups()) { if (group.getGroupId().equals(groupId)) { hasGroup = true; break; } } if (!hasGroup) return; // 被邀请 EMMessage msg = EMMessage.createReceiveMessage(Type.TXT); msg.setChatType(ChatType.GroupChat); msg.setFrom(inviter); msg.setTo(groupId); msg.setMsgId(UUID.randomUUID().toString()); msg.addBody(new TextMessageBody(inviter + "邀请你加入了群聊")); // 保存邀请消息 EMChatManager.getInstance().saveMessage(msg); // 提醒新消息 EMNotifier.getInstance(getApplicationContext()).notifyOnNewMsg(); runOnUiThread(new Runnable() { public void run() { updateUnreadLabel(); // 刷新ui if (currentTabIndex == 0) chatHistoryFragment.refresh(); if (CommonUtils.getTopActivity(MainActivity.this).equals( GroupsActivity.class.getName())) { GroupsActivity.instance.onResume(); } } }); } @Override public void onInvitationAccpted(String groupId, String inviter, String reason) { } @Override public void onInvitationDeclined(String groupId, String invitee, String reason) { } @Override public void onUserRemoved(String groupId, String groupName) { // 刷新ui runOnUiThread(new Runnable() { public void run() { try { updateUnreadLabel(); if (currentTabIndex == 0) chatHistoryFragment.refresh(); if (CommonUtils.getTopActivity(MainActivity.this) .equals(GroupsActivity.class.getName())) { GroupsActivity.instance.onResume(); } } catch (Exception e) { EMLog.e(TAG, "refresh exception " + e.getMessage()); } } }); } @Override public void onGroupDestroy(String groupId, String groupName) { // 群被解散 // 提示用户群被解散,demo省略 // 刷新ui runOnUiThread(new Runnable() { public void run() { updateUnreadLabel(); if (currentTabIndex == 0) chatHistoryFragment.refresh(); if (CommonUtils.getTopActivity(MainActivity.this).equals( GroupsActivity.class.getName())) { GroupsActivity.instance.onResume(); } } }); } @Override public void onApplicationReceived(String groupId, String groupName, String applyer, String reason) { // 用户申请加入群聊 InviteMessage msg = new InviteMessage(); msg.setFrom(applyer); msg.setTime(System.currentTimeMillis()); msg.setGroupId(groupId); msg.setGroupName(groupName); msg.setReason(reason); Log.d(TAG, applyer + " 申请加入群聊:" + groupName); msg.setStatus(InviteMesageStatus.BEAPPLYED); notifyNewIviteMessage(msg); } @Override public void onApplicationAccept(String groupId, String groupName, String accepter) { // 加群申请被同意 EMMessage msg = EMMessage.createReceiveMessage(Type.TXT); msg.setChatType(ChatType.GroupChat); msg.setFrom(accepter); msg.setTo(groupId); msg.setMsgId(UUID.randomUUID().toString()); msg.addBody(new TextMessageBody(accepter + "同意了你的群聊申请")); // 保存同意消息 EMChatManager.getInstance().saveMessage(msg); // 提醒新消息 EMNotifier.getInstance(getApplicationContext()).notifyOnNewMsg(); runOnUiThread(new Runnable() { public void run() { updateUnreadLabel(); // 刷新ui if (currentTabIndex == 0) chatHistoryFragment.refresh(); if (CommonUtils.getTopActivity(MainActivity.this).equals( GroupsActivity.class.getName())) { GroupsActivity.instance.onResume(); } } }); } @Override public void onApplicationDeclined(String groupId, String groupName, String decliner, String reason) { // 加群申请被拒绝,demo未实现 } }
0 0
- 72MainActivity中群聊的监听
- 71MainActivity中连接的监听
- 70MainActivity注册监听联系人变化
- MainActivity
- mainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- PHP GB库
- org.json XML和Json互转
- Android的适配问题
- PHP SoapClient 解决多个namespace的问题。
- 享元模式
- 72MainActivity中群聊的监听
- hdu 1257 最少拦截系统 (贪心)
- 注意了!预计2015年将有8大投资陷阱。
- Segmentation Fault in Linux 原因与避免
- [问题]Warning: xctool-0.2.2 already installed, it's just not linked
- UML序列图
- 编程中数据是内存中的01
- sqoop安装和使用
- 算法面试题之判断整数是否可以被3整除