Android如何临时隐藏其他应用通知并在后续恢复显示
临时隐藏指定应用通知的实现方案
首先明确:你提到的snoozeNotification()方法完全可以实现自定义单应用通知临时隐藏、后续手动恢复的需求,不需要依赖全局DND规则,也不会影响其他应用的通知展示。
前置要求
- 首先需获取用户授予的
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE权限,这是使用NotificationListenerService所有接口的前提 - 该能力仅支持API 26(Android 8.0)及以上系统,更低版本系统无对应原生接口
临时隐藏通知的操作
你可以通过NotificationListenerService实例调用snoozeNotification(String notificationKey, long durationMs)方法实现单条通知暂存隐藏:
- 参数
notificationKey:对应StatusBarNotification对象调用getKey()返回的唯一标识,可用于定位单条通知 - 参数
durationMs:暂存时长,单位为毫秒。如果需要完全由用户手动控制恢复时机,可将该值设置为足够大的数值(比如30天的毫秒数2592000000L),避免系统到期自动恢复通知。
如果需要隐藏单个应用的所有通知,可先在onNotificationPosted()回调中按应用包名过滤,拿到目标应用所有通知的key后批量执行snooze操作即可,完全支持用户自主选择要隐藏的应用。
恢复暂存通知的操作
如果需要提前结束暂存、将通知重新展示在通知栏,调用updateNotificationSnooze(String notificationKey, long durationMs)方法,将第二个参数设置为0即可,系统会立刻恢复对应通知的展示。
内容的提问来源于stack exchange,提问作者Flyview
相关产品推荐
相关产品推荐

