2011-03-08 30 views
17

Deseo eliminar notificaciones de otra aplicación que se muestra en la barra de notificaciones. ¿Es eso posible? NotificationManager.cancelAll(); cancela solo las notificaciones que muestra la aplicación de llamada, hasta donde yo sé.Eliminar notificaciones de la barra de notificaciones de otras aplicaciones

¿Por qué quiero hacer esto?

Tengo una aplicación que lee y envía SMS a través de una página web, y quiero que esta aplicación coexista con las aplicaciones de SMS existentes, como Handcent SMS. La forma en que quiero que funcione es que cuando leo los SMS recién recibidos a través de la página web, quiero cancelar la nueva notificación de SMS que se muestra en Handcent SMS porque ahora se lee el nuevo SMS. Estoy marcando el SMS como leído, y Handcent SMS lo reconoce como leído una vez que abro Handcent SMS, pero la notificación sigue allí hasta que hago clic en el SMS real.

Hay dos senarios; número 1:

  1. El dispositivo Android recibe un SMS.
  2. Handcent SMS muestra una notificación.
  3. El usuario lee los SMS en el dispositivo.
  4. Handcent SMS elimina la notificación y marca el SMS como leído.

Senario 2:

  1. El dispositivo androide recibe un SMS.
  2. Handcent SMS muestra una notificación.
  3. El usuario lee el SMS a través de la interfaz web.
  4. Mi aplicación borra la nueva notificación de SMS que se muestra en Handcent SMS y marca el SMS como leído.

¿Esto es posible?

+0

¿Por qué querrías hacer eso alguna vez? No me gustaría que ninguna aplicación robe mis notificaciones con seguridad. –

+6

Amir, te dije por qué en la sección "¿Por qué quiero hacer esto?" :). – johboh

+0

@johboh ¿puede cancelar la notificación de otra aplicación ahora? –

Respuesta

4

Puede cancelar sus propias notificaciones usando NotificationManager.
Pero no puede cancelar las notificaciones de otras aplicaciones, eso no es posible.

+1

Estoy un poco confundido. ¿De quién es la respuesta realmente correcta? tuyo, o @Oasis Feng? –

14

Desde Android 4.3 en adelante, ahora puede cancelar las notificaciones desde cualquier aplicación.

Debe registrar su aplicación como NotificationListenerService, luego llamar al NotificationListenerService.cancelNotification(String pkg, String tag, int id) para cancelar una notificación.

+2

Tenga en cuenta que crear una instancia de NotificationListenerService y llamar a cancelNotification() dará como resultado NullPointerException.Debe extender NotificationListenerService e iniciar el servicio, luego cancelar la notificación dentro del servicio. – black

+0

Lo ejecuté dentro de onNotificationPosted(), pero no lo está cancelando. ¿Podría echar un vistazo? http://stackoverflow.com/questions/29803218/cant-cancel-notification-using- notificationlistenerservice –

+0

Tenga en cuenta que este método está en desuso desde Lollipop, su firma ha cambiado, como @QuadX señaló en su respuesta a continuación –

Cuestiones relacionadas