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
原创粉丝点击