Xóa thông báo sau khi nhấp vào


120

Tôi muốn rằng thông báo sẽ bị đóng sau khi người dùng nhấp vào nó. Tôi thấy rằng mọi người nói rằng hãy sử dụng cờ, nhưng tôi không thể tìm thấy cờ ở đâu vì tôi đang sử dụng lớp NotificationCompat.Builder chứ không phải lớp Thông báo. Ai đó có bất kỳ ý tưởng nào về cách làm cho thông báo bị xóa bởi chính cô ấy?
Đây là mã của tôi khi tôi đặt thông bá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());

Câu trả lời:


325

Dễ dàng, chỉ cần gọi thế này:

mBuilder.setAutoCancel(true);

Ngoài ra, tuy không thực sự cần thiết nhưng nếu bạn thực sự muốn sử dụng FLAG_AUTO_CANCEL, chỉ cần gọi số này trước khi gọi mNotificationManager.notify:

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

2
Đây là câu trả lời hay nhất.. flag_auto_cancel không hoạt động..bạn đã cứu được ngày của tôi!
allemattio

16
getNotificationsbị phản đối, sử dụng: mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;thay vì
blueware

mBuilder.build () cũng không được dùng nữa
Mansuu ....

2
khi tôi nhấn vào thông báo, setAutoCancel (true) này thực sự hoạt động. NHƯNG khi tôi nhấp vào Hành động trong thông báo (gọi trong trường hợp của tôi), nó KHÔNG HOẠT ĐỘNG!
Async-

1
Vui lòng xem câu hỏi của tôi tại đây: stackoverflow.com/questions/37595594/…
Async- Ngày

18

Thử cái này....

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()bị phản đối hiện nay sử dụng .build()thay vì nhưmBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda

9

Đây là thông bá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);

chìa khóa đằng sau việc hủy bỏ khi nhấp chuột là:

            .setAutoCancel(true)

tôi hy vọng nó giải quyết được vấn đề.



1

Trong kotlin, bạn có thể sử dụng:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.