您的位置:首页 > 移动开发 > 微信开发

【笔记】Android NotificationListenerService监听短信、来电、微信、QQ等通知消息

2017-05-22 23:00 1261 查看
最近和一个做手环的公司对接,封装了一堆蓝牙的接口,然后那些消息的监听什么的不给,只能自己去实现。

不得不说非常幸运,NotificationListenerService正好是API 18开始加入的,而蓝牙BLE最低支持的就是18。

根据API的描述,我们发现只需要两步就能实现通知的监听:

1、实现Service
创建一个实现NotificationListenerService的服务,如果只是监听通知的显示和取消只需要在服务里重写通知显示监听onNotificationPosted和通知移除onNotificationRemoved即可。

/**
* 通知监听服务
*
* @author SJL
* @date 2017/5/22 22:21
*/
public class NLService extends NotificationListenerService {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
super.onNotificationPosted(sbn);
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
super.onNotificationRemoved(sbn);
}
}


2、配置Manifest

在我们创建Service的时候,Manifest中已经有service节点的配置生成了,我们只需要配置一下权限和过滤器即可,非常方便。

<service
android:name=".NLService"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>


3、权限问题

只需要以上两步就能实现通知消息的监听确实很方便,但谷歌仍给我们留了个坑——权限问题。

与之前的悬浮窗问题一样,监听通知栏的消息也需要用户手动去授权。

判断是否已授权,使用了v7兼容库中方法,超方便

/**
* 是否已授权
*
* @return
*/
private boolean isNotificationServiceEnable() {
return NotificationManagerCompat.getEnabledListenerPackages(this).contains(getPackageName());
}


跳转通知授权界面

startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));


源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 通知监听
相关文章推荐