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
- 70MainActivity注册监听联系人变化
- Android 监听联系人的变化
- 动态注册监听网络变化
- 动态注册监听网络变化
- 完美解决android监听联系人数据变化
- android监听联系人变化的方法
- iOS-监听iPhone本地联系人的变化
- 静态注册广播监听网络变化
- 动态注册广播 监听网络变化
- 关于监听联系人变化的问题与解决方法探讨
- 动态注册广播,监听网络状态变化,判断网络模式
- Android监听时间变化的广播,只能动态注册
- BroadcastReceiver之动态注册监听网络状态变化
- Android开发之动态注册监听网络变化
- 安卓笔记 动态注册广播 监听网络变化
- Android---动态注册监听网路变化的广播
- 72MainActivity中群聊的监听
- Android 监听开机广播启动服务 动态注册时间变化监听广播
- 对Cocosd2x3.x触摸事件的深度解析
- 从字符串中截取最长的没有重复字符的子字符串(一次循环)
- spring mvc ContentNegotiatingViewResolver 根据路径后缀,选择不同视图
- C++引用作为返回值
- NagiosQL添加监控主机及Nagios上启用报警机制
- 70MainActivity注册监听联系人变化
- linux 模块交叉编译
- Python基础教程之虚拟茶话会程序分析
- HDOJ 2049 不容易系列之(4)——考新郎
- C++用const 保护 引用参数的传递
- php遍历windows下中文目录下的所有文件名
- mysql用法精华集锦
- IE下Select下拉框宽度无法自适应Bug
- select into from 与 insert into select 区别鉴赏