Notification组织结构与cancel方法。
由于Android市场管理的不健全,很多APP都通过向通知栏投广告的方式诱导用户点击,广告多了,很是烦心。
因此好多安全软件提供了去通知栏广告的功能,甚至Android在4.2以后提供了disable某个app的notification功能,来净化通知栏。可见通知栏的控制对于用户来说至关重要。
安卓安全小分队在研究这一功能时,希望提出一些建设性的意见供大家参考。
一、组织结构
1. NotificationManagerService
NotificationManagerService 是通知栏的大总管,负责处理所有APP发送来的通知消息。其功能非常简单,查看NotificationManagerService.java的代码可以得知。
NMS做的工作大致可分为:
a. 查询/设置某个APP的发通知能力(可禁用某APP发送通知,4.2版本后推出);
b. 接受APP发送的通知;
c. 记录notification数据;
d. 发送应该显示的通知到通知栏(StatusBar)
e. 删除某条通知;
2. NotificationRecord
如果大家认为Notification类是NMS用来存储Notification的信息的数据结构那就大错特错了,在NMS内部是用NotificationRecord来存储的,其中包括了Notification类。
新浪微博 @安卓安全小分队