67MainActivity接收新消息的提醒
来源:互联网 发布:网络语皮是什么意思 编辑:程序博客网 时间:2024/05/22 06:56
实现后的效果:
这个广播接收者主要用来在底部菜单上面显示未读的消息数目。
/** * * 新消息广播接收者 * * @author * */private class NewMessageBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// 主页面收到消息后,主要为了提示未读,实际消息内容需要到chat页面查看// msgid和from是从环信的jar中传过来的String from = intent.getStringExtra("from");// 消息idString msgId = intent.getStringExtra("msgid");EMMessage message = EMChatManager.getInstance().getMessage(msgId);// ========================================================================================Log.i(TAG, "msgid:" + msgId);Log.i(TAG, "from:" + from);Log.i(TAG, " message.getFrom():" + message.getFrom());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");Log.i(TAG," message.getMsgTime():" + sdf.format(message.getMsgTime()));Log.i(TAG, "message.getTo():" + message.getTo());/* * Log.i(TAG, "ChatActivity.activityInstance.getToChatUsername()):" * + ChatActivity.activityInstance.getToChatUsername()); * * Log.i(TAG, "ChatActivity.activityInstance.getToChatUsername()):" * + ChatActivity.activityInstance.getToChatUsername()); */// =======================================================================// BUG修复 在聊天页面对方发送消息过来时不立即显示内容的BUGif (ChatActivity.activityInstance != null) {if (message.getChatType() == ChatType.GroupChat) {if (message.getTo().equals(ChatActivity.activityInstance.getToChatUsername())) {return;}} else {if (from.equals(ChatActivity.activityInstance.getToChatUsername())) {return;}}}// 注销广播接收者,否则在ChatActivity中会收到这个广播// onReceive()方法中调用abortBroadcast,表示将这个广播截断,后面的广播接受者无法再接收这个消息abortBroadcast();notifyNewMessage(message);updateUnreadLabel();// 下面的代码有点小问题// 当前页面如果为聊天历史页面,刷新此页面if (chatHistoryFragment != null) {chatHistoryFragment.refresh();}}}
创建一个内部类继承自:BroadcastReceiver,内部类实现的广播接收者不需要在清单文件中配置。首先从SDK获取消息来自哪里(from)和消息的id(msgid)。根据msgid得到EMMessage的实例message,这个message可以获取发送时间等等的信息。然后调用abortBroadcast方法,这样后面的广播接收者就不会再收到这个广播了。
通过代码注册:
msgReceiver = new NewMessageBroadcastReceiver();IntentFilter intentFilter = new IntentFilter(EMChatManager.getInstance().getNewMessageBroadcastAction());intentFilter.setPriority(3);registerReceiver(msgReceiver, intentFilter);
必须先调用:
EMChat.getInstance().setAppInited();
0 0
- 67MainActivity接收新消息的提醒
- 用asp.net 实现页面的新消息提醒功能
- 类似于QQ新消息提醒-前端
- 关于cookie的部分用法(页面中新消息声音提醒开关)
- 一个chrome插件--新消息提醒助手
- 实现Web页面新消息实时提醒
- js实现网页新消息标题闪烁提醒
- Android UI 新消息提醒_BadgeView Plus
- MainActivity 通过广播接收 IntentService传过来的数据
- 用手机接收Google Calendar的短信提醒
- 用Outlook2010接收谷歌日历的邮件提醒
- iOS 接收新消息通知调用系统声音 震动
- MainActivity
- mainActivity
- MainActivity
- MainActivity
- MainActivity
- MainActivity
- python的time操作
- 利用Anchor和Dock属性管理WinForm控件
- 不能使用缺陷数据作为绩效度量
- java setVisible顺序不同导致窗体内容不显示问题
- Unity3D 场景创建 -- 基本概念
- 67MainActivity接收新消息的提醒
- Binary Tree Level Order Traversal ---- LeetCode
- 日经社説 20150109 食品企業はもっと情報開示を
- 【BZOJ3612】【HEOI2014】平衡 整数划分、
- OpenCV图像匹配算法之orb
- Transform组件C#游戏开发快速入门
- OJ求矩形方阵中三角元素之和
- docker使用笔记,自用以供参考
- golang channal中buf和for range一些用法