Удалить уведомление из панели уведомлений из других приложений - PullRequest
17 голосов
/ 08 марта 2011

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

Почему я хочу это сделать?

У меня есть приложение, которое читает и отправляет SMS через веб-страницу.и я хочу, чтобы это приложение совпало с существующими приложениями SMS, такими как Handcent SMS.Я хочу, чтобы это работало так: при чтении вновь полученных SMS-сообщений через веб-страницу я хочу отменить новое SMS-уведомление, отображаемое Handcent SMS, потому что новое SMS-сообщение теперь читается.Я отмечаю SMS как прочитанное, и Handcent SMS распознает его как прочитанное, как только я открываю Handcent SMS, но уведомление остается, пока я не нажму на фактическое SMS.

Есть два senarios;номер 1:

  1. Устройство Android получает SMS-сообщение.
  2. Уведомление отображается с помощью Handcent SMS.
  3. Пользователь читает SMS на устройстве.
  4. Handcent SMS удаляет уведомление и помечает SMS как прочитанное.

Senario 2:

  1. Устройство Android получает SMS.
  2. Handcent SMS показывает уведомление.
  3. Пользователь читает SMS через веб-интерфейс.
  4. Мое приложение удаляет новое SMS-уведомление, отображаемое Handcent SMS, и помечает SMS как прочитанное.

Возможно ли это?

Ответы [ 3 ]

15 голосов
/ 28 июля 2013

Начиная с Android 4.3, теперь вы можете отменять уведомления из любых приложений.

Вам необходимо зарегистрировать приложение как NotificationListenerService, а затем позвонить NotificationListenerService.cancelNotification(String pkg, String tag, int id), чтобы отменить одно уведомление.

5 голосов
/ 12 ноября 2016

Вы можете закрыть любое уведомление, используя 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

4 голосов
/ 08 марта 2011

Вы можете отменить свои собственные уведомления, используя NotificationManager .
Но вы не можете отменить уведомления других приложений, это невозможно.

...