Уведомление о состоянии строки состояния перед его отображением

Я использую NotificationListenerService для обработки уведомлений устройства:

 @Override public void onNotificationPosted(StatusBarNotification sbn) { Log.d(TAG,"onNotificationPosted posted - ID :" + sbn.getId() + "\t" + sbn.getNotification().tickerText + "\t" + sbn.getPackageName()); } 

Метод onNotificationPosted() вызывается после того, как уведомление было отправлено на устройство. Есть ли способ поймать его до его представления?

Я видел, что уведомления о чтении также могут быть достигнуты с помощью AccessibilityManager, но снова он считывается после появления уведомления.

Есть ли способ отложить всплывающие окна уведомлений устройства до некоторого момента?

Я знаю, что могу удалить уведомление, используя NotificationListenerService как он появился (после того, как он появился пользователю), и сохраните его и попытайтесь перезапустить его позже. Но у меня возникают проблемы с перезагрузкой, и снова это происходит после того, как уведомление о статусной строке уже показано.

В настоящее время использование NotificationListenerService – единственный способ получить уведомление о StatusBarNotifications и взаимодействовать с StatusBarNotifications . Перехват и обработка уведомлений до того, как они даже доходят до строки состояния, не допускается и будет представлять собой довольно заметное нарушение безопасности – это также подтверждается здесь: https://stackoverflow.com/questions/10286087/intercepting-notifications .

Если бы это было возможно, приложение могло бы теоретически блокировать все уведомления для всех других приложений в целом по системе, что было бы нехорошо. Кроме того, даже с NotificationListenerService вы можете видеть только уведомления из других приложений, а не изменять или удалять их. Методы изменения / отмены уведомлений приложений, а именно cancelAllNotifications() , служат только для изменения уведомлений, сгенерированных вызывающим приложением.