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());
Yossi Zloof
fuente

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;
ingh.am
fuente
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-
1
Vea mi pregunta aquí: stackoverflow.com/questions/37595594/…
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());
Silambarasan Poonguti
fuente
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.

Ali Nawaz
fuente
1

En kotlin, puedes usar:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Ricardo
fuente