Удалить уведомление из панели уведомлений из других приложений
Я хочу удалить уведомления из другого приложения, показанного на панели уведомлений. Это возможно? NotificationManager.cancelAll();
отменяет только уведомления, отображаемые вызывающим приложением, насколько я знаю.
Почему я хочу это сделать?
У меня есть приложение, которое читает и отправляет SMS через веб-страницу, и я хочу, чтобы это приложение совместно выходило с существующими приложениями SMS, такими как Handcent SMS. Способ, которым я хочу работать, заключается в том, что при чтении недавно полученных SMS через веб-страницу я хочу отменить новое SMS-уведомление, показанное Handcent SMS, потому что теперь новое SMS-сообщение читается. Я отмечаю SMS как прочитанное, и Handcent SMS распознает его как прочитанное после того, как я открою Handcent SMS, но уведомление все еще существует, пока я не нажму на фактическое SMS.
Есть два сенария; номер 1:
- Устройство android получает SMS.
- Уведомление отображается с помощью Handcent SMS.
- Пользователь читает SMS на устройстве.
- Handcent SMS удаляет уведомление и маркирует SMS как прочитанное.
Сенарио 2:
- Устройство android получает SMS.
- Уведомление отображается с помощью Handcent SMS.
- Пользователь считывает SMS через веб-интерфейс.
- Мое приложение очистит новое SMS-уведомление, показанное Handcent SMS, и помечает SMS как прочитанное.
Возможно ли это?
Ответы
Ответ 1
Начиная с Android 4.3, вы можете отменить уведомления из любых приложений.
Вам нужно зарегистрировать свое приложение как NotificationListenerService
, а затем вызвать NotificationListenerService.cancelNotification(String pkg, String tag, int id)
, чтобы отменить одно уведомление.
Ответ 2
Вы можете отменить свои собственные уведомления, используя NotificationManager.
Но вы не можете отменить уведомления других приложений, что невозможно.
Ответ 3
Вы можете закрыть любое использование уведомлений NotificationListenerService:
public class NotificationListener extends NotificationListenerService {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
cancelNotification(sbn.getKey());
}
}
Ваше приложение должно иметь разрешение BIND_NOTIFICATION_LISTENER_SERVICE.
https://developer.android.com/reference/android/service/notification/NotificationListenerService.html