La notificación de Android no desaparece después de hacer clic en la notificación

4 minutos de lectura

avatar de usuario
Flo

Si tengo algunos problemas con una notificación que quiero mostrar en la barra de notificaciones. Aunque configuré el indicador de notificación en Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL la notificación no desaparece después de hacer clic en ella. ¿Alguna idea de lo que estoy haciendo mal?

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

int icon = R.drawable.icon;
CharSequence tickerText = "Ticker Text";
long time = System.currentTimeMillis();

Notification notification = new Notification(icon, tickerText, time);
notification.flags = Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL; 

Context context = getApplicationContext();
CharSequence contentTitle = "Title";
CharSequence contentText = "Text";
Intent notificationIntent = new Intent(this, SilentFlipConfiguration.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(1,notification);

mientras construía Notification por NotificationBuilder puedes usar notificationBuilder.setAutoCancel(true);.

  • Entonces, ¿qué diferencias crean notificaciones usando Notificación? mNotificationManager.notify(1,notification); y usando NotificationBuilder mNotificationManager.notify(1, mBuilder.build());? Gracias.

    – Yohanim

    10 de julio de 2014 a las 11:54


  • Esta respuesta debe aceptarse, está más en línea con la doctrina actual de diseño de Android

    – jmaculado

    27 de agosto de 2014 a las 16:01

  • Esta respuesta es correcta. Se acepta que funciona pero no siempre. Hay un problema cuando hay notificaciones apiladas en GCM (o lo que sea que esté usando). Una vez que hace ping al servidor de notificaciones, regresa con muchas notificaciones y, a veces, simplemente repite la apariencia de la notificación.

    – Nikola Milutinovic

    1 de octubre de 2014 a las 1:01

  • notificationBuilder.setAutoCancel(true); no me funciona ¿Debo poner antes de mi Intención Pendiente?

    – Kairi San

    15 de febrero de 2016 a las 3:36

avatar de usuario
sinic

notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL

De la documentación:

Bit para ser bit a bit-oed en el campo de banderas que debe configurarse si la notificación debe cancelarse cuando el usuario hace clic en ella

  • Esta no es la respuesta correcta. Notification.DEFAULT_LIGHTS es parte del Notification.defaults clase, no la Notification.flags clase. Vea mi respuesta para los setters apropiados.

    – Darcy

    2 de marzo de 2012 a las 15:13

  • notificación.flags = Notificación.DEFAULT_LIGHTS | Notificación.FLAG_AUTO_CANCEL; este método está funcionando gracias sync.

    – Ravikumar11

    26 de abril de 2013 a las 4:39

  • El código en esta respuesta hizo que el sonido de notificación se reprodujera varias veces. Mira las otras respuestas.

    – ban-geoingeniería

    16 de enero de 2015 a las 16:45

// Uses the default lighting scheme
notification.defaults |= Notification.DEFAULT_LIGHTS;

// Will show lights and make the notification disappear when the presses it
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;

  • He revisado los documentos de Android. No entiendo muy bien cuándo se deben usar las banderas. ¿Por qué solo la notificación.defaults=notificación.DEFAULT_LIGHTS no es suficiente para mostrar las luces? Porque la vibración y el sonido funcionan sin la bandera.

    – Aswin

    17 de agosto de 2012 a las 17:21

  • Estoy usando NotificationBuilder, NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(android.R.drawable.ic_popup_sync) .setContentTitle(“Nuevo Tweet”) .setContentText(“Hay ” + recuento + ” tweets”) ; mBuilder.setDefaults(NotificationCompat.DEFAULT_LIGHTS | Notificación.FLAG_AUTO_CANCEL);

    – Joseph

    16/10/2014 a las 20:03

Estado de 2016: puedes usar mBuilder.setAutoCancel(true).

Fuente: https://developer.android.com/reference/android/app/Notification.Builder.html

La respuesta para mí fue usar mBuilder.setOngoing(false)

avatar de usuario
usuario1810087

Usa la bandera Notificación.FLAG_AUTO_CANCEL

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

// Cancel the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

y para iniciar la aplicación:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Intent intent = new Intent(context, App.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

avatar de usuario
Ángel

Quitar una notificación

Las notificaciones permanecen visibles hasta que ocurre una de las siguientes situaciones:

  1. El usuario descarta la notificación.
  2. El usuario hace clic en la notificación y usted llamó a setAutoCancel() cuando creó la notificación.
  3. Llamas a cancel() para una identificación de notificación específica. Este método también elimina las notificaciones en curso.
  4. Llama a cancelAll(), que elimina todas las notificaciones que emitió anteriormente.
  5. Si configura un tiempo de espera al crear una notificación usando setTimeoutAfter(), el sistema cancela la notificación una vez que transcurre la duración especificada. Si es necesario, puede cancelar una notificación antes de que transcurra el tiempo de espera especificado.

Para más detalles ver:
https://developer.android.com/training/notify-user/build-notification?hl=en

¿Ha sido útil esta solución?