SystemUI 通知栏动态隐藏、显示某些应用的通知

不积跬步无以至千里    

一、简介    

最近有个新需求,关于动态去显示和隐藏某些应用的通知。

二、需求分析

既然是动态隐藏显示某些应用的通知,因此需要另一提供数据的一方,因为是为了满足另一个应用的关于操作的隐藏与显示需求,因此是“它”来给我提供隐藏应用的的数据,这样就相当于两个应用去完成这个功能,即进程间的一个通讯消息,这样就有如下方案:广播、AIDL、共享数据(ContentResolver、Settings、SystemProperties),经过分析还是使用ContentResolver进行数据共享数据库。

技术难点一:

获取最新数据的方式——这里采用ContentResolver,四大组件之一

技术难点二:

刷新数据的时机(有可能会忽略开机时,第一次获取数据;还有可能牵扯到多用户的时候,也要在切换用户是刷新数据)

技术难点三:

刷新通知的数据(由于要隐藏某些应用的通知,因此需求根据隐藏应用数据,然后过滤掉,显示出其他应用的通知,这里是在SystemUI中,关于通知的一部分,因此需要在这里实现)

三、流程

监测数据库变化(由于这里数据库没用观察者,因此无法监听数据库变化了,这里数据库变化会广播通知我们)——》获取数据(查询数据库)——》展示刷新最新过滤完的通知数据

这里主要是在待机状态下,因此还要考虑就是重启或者开机时的查询数据库,就是初始化状态。

四、代码

你可能感兴趣的:(通知栏,SystemUI的爱恨情仇)