Eliminar notificación después de hacer clic


120

Quiero que la notificación se cierre después de que el usuario haga clic en ella. Vi que todos decían usar banderas, pero no puedo encontrar las banderas en ningún lado porque estoy usando la clase NotificationCompat.Builder y no la clase Notification. ¿Alguien tiene alguna idea de cómo hacer que la notificación se elimine por sí misma?
Aquí está mi código cuando configuro la notificación:

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("New Question")
            .setContentText("" + QuestionData.getAuthor().getUserName() + ": " + QuestionData.getQuestion() + "");

    Intent openHomePageActivity = new Intent("com.example.ihelp.HOMEPAGEACTIVITY");
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addNextIntent(openHomePageActivity);

    PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_UPDATE_CURRENT
            );
    mBuilder.setContentIntent(resultPendingIntent);
    NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);       

    mNotificationManager.notify(0, mBuilder.build());

Respuestas:


325

Fácil, simplemente llama a esto:

mBuilder.setAutoCancel(true);

Además, si bien no es realmente necesario, si realmente desea usar FLAG_AUTO_CANCEL, simplemente llame a esto antes de llamar mNotificationManager.notify:

mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;

2
Esta es la mejor respuesta ... el flag_auto_cancel no funcionaba ... ¡me salvaste el día!
allemattio

16
getNotificationsestá en desuso, use: en su mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;lugar
blueware

mBuilder.build () también está en desuso
Mansuu ...

2
cuando toco la notificación, este setAutoCancel (verdadero) funciona, de hecho. PERO cuando hago clic en Acción en la notificación (llamada en mi caso), ¡NO FUNCIONA!
Async-


18

Prueba esto....

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

 ..........
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this).setSmallIcon(R.drawable.push_notify_icon)
            .setContentTitle("New Question!")
            .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
            .setAutoCancel(true).setContentText("" + QuestionData.getAuthor().getUserName() + ": " + QuestionData.getQuestion() + "");
mBuilder.setContentIntent(contentIntent);

    ..............        


mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(0, mBuilder.build());

1
.getNotification()está en desuso ahora usar .build()en su lugar comomBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda

9

Aquí está la notificación:

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_calendar)
            .setContentTitle("My Firebase Push notification")
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(soundUri)
            .setContentIntent(pendingIntent);

La clave detrás de la cancelación al hacer clic es:

            .setAutoCancel(true)

Espero que resuelva el asunto.



1

En kotlin, puedes usar:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
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.