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


133

Si tengo algunos problemas con una notificación que quiero mostrar en la barra de notificaciones. Aunque configuré el indicador de Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCELnotificación, 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);

Respuestas:


305

Mientras que la construcción Notificationpor NotificationBuilderusted puede utilizar notificationBuilder.setAutoCancel(true);.


2
Entonces, ¿qué diferencias crean notificaciones usando Notification mNotificationManager.notify(1,notification);y NotificationBuilder mNotificationManager.notify(1, mBuilder.build());? Gracias.
Yohanes AI

9
Esta respuesta debe ser aceptada, está más en línea con la doctrina actual del diseño de Android
jmaculate

Esta respuesta es correcta. Aceptado uno 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

55
notificationBuilder.setAutoCancel(true);no funciona para mi ¿Debo poner antes de mi intención pendiente?
Kairi San

129
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL

De la documentación:

Bit para ser bit a bit o editado en el campo de marcas que debe establecerse si la notificación debe cancelarse cuando el usuario hace clic


3
Esta no es la respuesta correcta. Notification.DEFAULT_LIGHTSes parte de la Notification.defaultsclase, no la Notification.flagsclase. Vea mi respuesta para los setters apropiados.
Darcy

notify.flags = Notification.DEFAULT_LIGHTS | Notificación.FLAG_AUTO_CANCEL; este método está funcionando gracias synic.
Ravikumar11

1
El código en esta respuesta resultó en el sonido de notificación que se reproduce varias veces. Mira las otras respuestas.
prohibición de geoingeniería

27
// 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;

1
He revisado los documentos de Android. No entiendo cuándo deberían usarse las banderas. ¿Por qué la notificación no es solo notificación.defaults = notificación.DEFAULT_LIGHTS suficiente para mostrar las luces? Porque la vibración y el sonido funcionan sin la bandera.
Ashwin

Estoy usando NotificationBuilder, NotificationCompat.Builder mBuilder = new NotificationCompat.Builder (this) .setSmallIcon (android.R.drawable.ic_popup_sync) .setContentTitle ("New Tweet") .setContentText ("Hay" + count + "tweets") ; mBuilder.setDefaults (NotificationCompat.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL);
Joseph



1

Use la notificación de bandera. 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);

0

Eliminar una notificación

Las notificaciones permanecen visibles hasta que ocurra 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. Llama a cancel () para obtener una ID 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 establece un tiempo de espera al crear una notificación utilizando setTimeoutAfter (), el sistema cancela la notificación después de que transcurre la duración especificada. Si es necesario, puede cancelar una notificación antes de que transcurra el tiempo de espera especificado.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.