添加第三方聊天软件QQ/微信/Twitter等桌面角标---NotificationListenerService
2017-06-27 12:56
501 查看
应客户需求研究添加第三方聊天软件QQ/微信/Twitter/易信等桌面图标添加角标,以显示最新消息数,而掉入此坑。
幸而看到其他博文和底层代码,了解到——NotificationListenerService,能让应用获取到其他应用发送的通知,是android在4.3版本后新加入的。拨开云雾见青天,甚是欢喜。废话不多,我们直接看实现:
<1>继承自NotificationListenerService,新增通知或是更新时会回调Posted,通知被移除时会回调Removed,
StatusBarNotification包含更多的通知详情。getNotification()返回我们所熟悉的Notification对象。Facebook/Twitter/陌陌等通知数可以通过notification.number获取;QQ/易信、陌陌新通知会覆盖旧通知,未读消息都是带在通知里面的。
需注意getId()/getTag()不同,StatusBarNotification可能不一样。小平台适配应用,考虑的因素太多,此坑太深,慎入。
<2>在AndroidManifest.xml添加注册和获取权限
<3>开启通知使用权
a.Acticity直接跳转
b.在settings->Apps->Configure apps->Special access->Notification access->开启相应应用的通知使用权。
<4>关于接收不到通知。根本原因是Service被杀掉,重新绑定,不生效。
请参考:http://blog.csdn.net/zrj244265428/article/details/68958358
以上参考,安卓通知栏管理详解及分析 NotificationListenerService:http://blog.csdn.net/cankingapp/article/details/50858229
幸而看到其他博文和底层代码,了解到——NotificationListenerService,能让应用获取到其他应用发送的通知,是android在4.3版本后新加入的。拨开云雾见青天,甚是欢喜。废话不多,我们直接看实现:
<1>继承自NotificationListenerService,新增通知或是更新时会回调Posted,通知被移除时会回调Removed,
public class MsgNotificationListenerService extends NotificationListenerService { @Override public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) { super.onNotificationPosted(sbn, rankingMap); } @Override public void onNotificationRemoved(StatusBarNotification sbn, RankingMap rankingMap) { super.onNotificationRemoved(sbn, rankingMap); } }
StatusBarNotification包含更多的通知详情。getNotification()返回我们所熟悉的Notification对象。Facebook/Twitter/陌陌等通知数可以通过notification.number获取;QQ/易信、陌陌新通知会覆盖旧通知,未读消息都是带在通知里面的。
需注意getId()/getTag()不同,StatusBarNotification可能不一样。小平台适配应用,考虑的因素太多,此坑太深,慎入。
<2>在AndroidManifest.xml添加注册和获取权限
<service android:name=".MsgNotificationListenerService" android:label="@string/app_name" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> <intent-filter> <action android:name="android.service.notification.NotificationListenerService" /> </intent-filter> </service>
<3>开启通知使用权
a.Acticity直接跳转
Set<String> packageNames = NotificationManagerCompat.getEnabledListenerPackages(this); if (!packageNames.contains(getPackageName())) { startActivityForResult(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"), 0); }
b.在settings->Apps->Configure apps->Special access->Notification access->开启相应应用的通知使用权。
<4>关于接收不到通知。根本原因是Service被杀掉,重新绑定,不生效。
请参考:http://blog.csdn.net/zrj244265428/article/details/68958358
以上参考,安卓通知栏管理详解及分析 NotificationListenerService:http://blog.csdn.net/cankingapp/article/details/50858229
相关文章推荐
- Android应用实现点击back键时,使应用返回桌面,而不是退出应用,类似微信,qq等聊天软件
- 【笔记】Android NotificationListenerService监听短信、来电、微信、QQ等通知消息
- Android第三方登录集合(QQ、微信、微博、百度、facebook、twitter)
- android 调用本地第三方应用软件,如qq、微信、微博和视频播放器等
- 聊天不用找人 把QQ好友安置到桌面
- 如果360推出聊天软件,有多少人会放弃使用QQ?
- CSDN也应该出聊天软件了,像QQ那样的
- QQ界面的MSN聊天软件
- 网页中添加调用qq或者msn聊天窗口与客服进行互动
- 仿QQ聊天软件及源码java版
- 快速聊天 我的QQ好友在桌面
- 网页中如何添加调用qq或者msn聊天窗口与客服进行互动
- 网页里添加QQ聊天按钮代码
- QQ临时聊天,无须添加好友
- gentoo中手动添加ebuild安装第三方软件
- 快速聊天:不用QQ概念版 也能将将QQ好友放到桌面 针对所有windows系统
- 如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴
- 网页中添加调用qq或者msn聊天窗口与客服进行互动
- 网页中添加 QQ 聊天代码
- 把QQ好友放到桌面上,快捷聊天