70MainActivity注册监听联系人变化

来源:互联网 发布:淘宝小智 编辑:程序博客网 时间:2024/06/06 20:47

onCreate中:

 EMContactManager.getInstance().setContactListener(                new MyContactListener());

MyContactListener实现EMContactListener接口,实现该接口的五个方法:添加,删除,邀请,同意,拒绝。

添加:

  @Override        public void onContactAdded(List<String> usernameList) {            // 保存增加的联系人            Map<String, User> localUsers = IMApplication.getInstance()                    .getContactList();            Map<String, User> toAddUsers = new HashMap<String, User>();            for (String username : usernameList) {                User user = setUserHead(username);                // 添加好友时可能会回调added方法两次                if (!localUsers.containsKey(username)) {                    userDao.saveContact(user);                }                toAddUsers.put(username, user);            }            localUsers.putAll(toAddUsers);            // 刷新ui            if (currentTabIndex == 1)                contactListFragment.refresh();        }
删除:

 @Override        public void onContactDeleted(final List<String> usernameList) {            // 被删除            Map<String, User> localUsers = IMApplication.getInstance()                    .getContactList();            for (String username : usernameList) {                localUsers.remove(username);                userDao.deleteContact(username);                inviteMessgeDao.deleteMessage(username);            }            runOnUiThread(new Runnable() {                public void run() {                    // 如果正在与此用户的聊天页面                    if (ChatActivity.activityInstance != null                            && usernameList                                    .contains(ChatActivity.activityInstance                                            .getToChatUsername())) {                        Toast.makeText(                                MainActivity.this,                                ChatActivity.activityInstance                                        .getToChatUsername() + "已把你从他好友列表里移除",                                1).show();                        ChatActivity.activityInstance.finish();                    }                    updateUnreadLabel();                    // 刷新ui                    if (currentTabIndex == 1)                        contactListFragment.refresh();                    else if (currentTabIndex == 0)                        chatHistoryFragment.refresh();                }            });        }
用户正在聊天界面的处理,放在子线程中进行处理。


其他的:

@Override        public void onContactInvited(String username, String reason) {            // 接到邀请的消息,如果不处理(同意或拒绝),掉线后,服务器会自动再发过来,所以客户端不需要重复提醒            List<InviteMessage> msgs = inviteMessgeDao.getMessageList();            for (InviteMessage inviteMessage : msgs) {                if (inviteMessage.getGroupId() == null                        && inviteMessage.getFrom().equals(username)) {                    inviteMessgeDao.deleteMessage(username);                }            }            // 自己封装的javabean            InviteMessage msg = new InviteMessage();            msg.setFrom(username);            msg.setTime(System.currentTimeMillis());            msg.setReason(reason);            Log.d(TAG, username + "请求加你为好友,reason: " + reason);            // 设置相应status            msg.setStatus(InviteMesageStatus.BEINVITEED);            notifyNewIviteMessage(msg);        }        @Override        public void onContactAgreed(String username) {            List<InviteMessage> msgs = inviteMessgeDao.getMessageList();            for (InviteMessage inviteMessage : msgs) {                if (inviteMessage.getFrom().equals(username)) {                    return;                }            }            // 自己封装的javabean            InviteMessage msg = new InviteMessage();            msg.setFrom(username);            msg.setTime(System.currentTimeMillis());            Log.d(TAG, username + "同意了你的好友请求");            msg.setStatus(InviteMesageStatus.BEAGREED);            notifyNewIviteMessage(msg);        }        @Override        public void onContactRefused(String username) {            // 参考同意,被邀请实现此功能,demo未实现            Log.d(username, username + "拒绝了你的好友请求");        }




0 0
原创粉丝点击