因此,我正在使用NotificationListener
服务来取消来自某些应用程序的某些通知,这样就不会干扰我的无障碍服务触摸屏幕(IE Facebook在我的应用程序尝试点击顶部屏幕上的。)
但是我有一个问题,即使onNotificationRemoved
显示应该取消应用程序通知,它也不会取消。
@Override
public void onNotificationPosted(StatusBarNotification sbn)
{
cancelNotification(sbn.getKey());
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.e("Msg","Notification Removed");
}
我确实查看了我要取消的其他应用程序的通知权限,并注意到它们设置为Urgent: Sound and pop up on screen
或High Priority
。这会阻止我取消它们吗?如果是这样,是否有一种方法可以通过编程方式更改而无需我的用户做任何事情?
答案 0 :(得分:0)
好的,所以我要做的就是禁止那些不允许清除的通知。这是我的最终解决方案(尽管这仅适用于Build.Version O):
boolean canClear = sbn.isClearable();
if (canClear){
cancelNotification(sbn.getKey());
}else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
snoozeNotification(sbn.getKey(), Long.MAX_VALUE - System.currentTimeMillis());
}
}
到目前为止,我唯一看到的缺点是,除非重新启动手机,否则就无法取消对应用程序的暂停。