Remover notificação depois de clicar

120

Quero que a notificação seja fechada depois que o usuário clicar nela. Eu vi todo mundo dizendo para usar sinalizadores, mas não consigo encontrá-los em lugar nenhum porque estou usando a classe NotificationCompat.Builder e não a classe Notification. Alguém tem alguma idéia de como remover a notificação sozinha?
Aqui está o meu código quando estou configurando a notificação:

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
fonte

Respostas:

325

Fácil, basta chamar isso:

mBuilder.setAutoCancel(true);

Além disso, embora não seja realmente necessário, se você realmente quiser usar FLAG_AUTO_CANCEL, basta ligar para isso antes de ligar mNotificationManager.notify:

mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
ingh.am
fonte
2
Esta é a melhor resposta .. a flag_auto_cancel não estava funcionando .. você salvou meu dia!
Allemattio 3/13/13
16
getNotificationsestá obsoleto, use: em mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;vez disso
blueware 07/07
mBuilder.build () também está obsoleto
Mansuu ....
2
quando toco na notificação, esse setAutoCancel (true) funciona, de fato. MAS, quando clico em Ação na notificação (chamada no meu caso), NÃO FUNCIONA!
usar o seguinte comando
1
Por favor, veja minha pergunta aqui: stackoverflow.com/questions/37595594/…
Async-
18

Tente isso ....

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
fonte
1
.getNotification()está obsoleto agora use em .build()vez disso comomBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda
9

Aqui está a notificação:

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

a chave por trás do cancelamento ao clicar é:

            .setAutoCancel(true)

espero que resolva o problema.

Ali Nawaz
fonte
1

No kotlin, você pode usar:

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