Rimuovi notifica dopo aver fatto clic


120

Voglio che la notifica venga chiusa dopo che l'utente fa clic su di essa. Ho visto che tutti dicono di usare i flag, ma non riesco a trovare i flag da nessuna parte perché sto usando la classe NotificationCompat.Builder e non la classe Notification. Qualcuno ha idea di come rimuovere la notifica da sola?
Ecco il mio codice quando imposto la notifica:

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());

Risposte:


325

Facile, chiamalo semplicemente:

mBuilder.setAutoCancel(true);

Inoltre, anche se non è davvero necessario, se vuoi davvero usarlo FLAG_AUTO_CANCEL, chiamalo prima di chiamare mNotificationManager.notify:

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

2
Questa è la risposta migliore..il flag_auto_cancel non funzionava..mi hai salvato la giornata!
allemattio

16
getNotificationsè deprecato, utilizzare: mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;invece
blueware

Anche mBuilder.build () è deprecato
Mansuu ....

2
quando tocco la notifica, questo setAutoCancel (true) funziona, davvero. MA quando clicco su Azione nella notifica (chiamata nel mio caso), NON FUNZIONA!
Async

1
Si prega di vedere la mia domanda qui: stackoverflow.com/questions/37595594/...
Async-

18

Prova questo....

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()è deprecato ora usa .build()invece comemBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda

9

Ecco la notifica:

    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 chiave dietro la cancellazione al clic è:

            .setAutoCancel(true)

spero che risolva la questione.



1

In kotlin, puoi usare:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.