No sobrescriba la notificación existente

Para un ID de notificación dado, ¿es posible (usando paquetes estándar de Android) no establecer una notificación si existe una notificación de la aplicación?

Tengo una aplicación de noticias que notifica a los usuarios sobre los titulares de noticias de última hora, uno de los requisitos es no sobreescribir una noticia de última hora si el usuario no la ha borrado o no ha hecho clic para verla.

Estoy usando una SharedPreference para establecer una bandera para averiguar si ya estoy mostrando un título más una intención de eliminación que lo borrará. Sin embargo, el deleteIntent no siempre se invoca cuando el usuario borra todas las notificaciones.

Gracias de antemano.

Sandeep

preguntado Oct 05 '10, 18:10

2 Respuestas

Para cualquiera que siga esto más tarde:

No hay una manera fácil de no para sobrescribir un ID de notificación existente usando el SDK. La forma de hacer esto es:

  • use una bandera booleana a través de SharedPreference, si esta bandera está configurada, no escriba la notificación
  • restablecer esta bandera cuando el usuario "Borrar" todas las notificaciones. Para hacer esto, configure un deleteIntent (a través de un Servicio), asegúrese de borrar este indicador en onStartCommand () y onStart ()
  • opcionalmente restablecer la bandera cuando se inicia la aplicación

Respondido 07 Oct 10, 15:10

Si su requerimiento es:

Uno de los requisitos es no sobreescribir una noticia de última hora si el usuario no la ha borrado o no ha hecho clic para verla.

Puede usar el NotificationManager para obtener una lista de todas las notificaciones activas publicadas por su aplicación usando getActiveNotifications()

Y verifique si el usuario ha descartado o abierto la notificación y tome la acción requerida.

Según el documento de referencia para getActiveNotifications():

Recupere una lista de notificaciones activas: aquellas que han sido publicadas por la aplicación de llamadas que aún no han sido descartadas por el usuario o canceladas por la aplicación.

Espero eso ayude.

contestado el 05 de mayo de 16 a las 11:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.