不积跬步无以至千里

一、简介
最近有个新需求,关于动态去显示和隐藏某些应用的通知。
二、需求分析
既然是动态隐藏显示某些应用的通知,因此需要另一提供数据的一方,因为是为了满足另一个应用的关于操作的隐藏与显示需求,因此是“它”来给我提供隐藏应用的的数据,这样就相当于两个应用去完成这个功能,即进程间的一个通讯消息,这样就有如下方案:广播、AIDL、共享数据(ContentResolver、Settings、SystemProperties),经过分析还是使用ContentResolver进行数据共享数据库。
技术难点一:
获取最新数据的方式——这里采用ContentResolver,四大组件之一
技术难点二:
刷新数据的时机(有可能会忽略开机时,第一次获取数据;还有可能牵扯到多用户的时候,也要在切换用户是刷新数据)
技术难点三:
刷新通知的数据(由于要隐藏某些应用的通知,因此需求根据隐藏应用数据,然后过滤掉,显示出其他应用的通知,这里是在SystemUI中,关于通知的一部分,因此需要在这里实现)
三、流程
监测数据库变化(由于这里数据库没用观察者,因此无法监听数

本文详细介绍了如何在SystemUI中动态隐藏和显示特定应用的通知,主要涉及使用ContentResolver进行进程间数据共享,监听数据库变化并刷新通知列表。在开机、SystemUI重启或用户切换时初始化并查询数据库,通过过滤和排序方法处理通知数据,确保显示正确的内容。在多用户场景下,需要注意数据刷新和同步问题。
订阅专栏 解锁全文
1968

被折叠的 条评论
为什么被折叠?



