Android: hapus notifikasi dari bilah notifikasi


Jawaban:


182

Ini cukup sederhana. Anda harus menelepon cancelatau cancelAlldi NotificationManager Anda. Parameter metode pembatalan adalah ID pemberitahuan yang harus dibatalkan.

Lihat API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)


Terima kasih Roflcoptr :) Saya menemukannya di sini: stackoverflow.com/questions/2839727/…
Nezir

3
int static final pribadi MY_NOTIFICATION_ID = 1234; String ns = Konteks.NOTIFICATION_SERVICE; NotificationManager mNotificationManager; mNotificationManager = (NotificationManager) getSystemService (ns); mNotificationManager.notify (MY_NOTIFICATION_ID, notifikasi); Kode contoh tidak lengkap. Tergantung bagaimana Anda membuat notifikasi. Pastikan Anda menggunakan id yang sama untuk membatalkan pemberitahuan seperti yang Anda gunakan saat membuat pemberitahuan. Untuk membatalkan: mNotificationManager.cancel (MY_NOTIFICATION_ID);
Nezir

Anda menyelamatkan hari itu !, senang membaca orang-orang seperti Anda, meskipun itu bukan jawaban yang kompleks untuk masalah rumit yang orang-orang seperti Anda banyak membantu kami di masa-masa sulit. Terima kasih banyak.
e-info128

public void delNoti (int id) {((NotificationManager) getSystemService (Konteks.NOTIFICATION_SERVICE)). batalkan (id);}
phnghue

1
bagaimana dengan notifikasi yang dibuat oleh sistem?
Zaid Mirza

219

Anda dapat mencoba kode cepat ini

public static void cancelNotification(Context ctx, int notifyId) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
    nMgr.cancel(notifyId);
}

19
Ini harus menjadi jawaban yang benar karena sederhana, benar dan langsung ke intinya.
ZeroTek

1
Hai, ini jawaban yang benar. Tetapi Baki Pemberitahuan tetap terlihat. Apakah ada cara untuk menyembunyikannya juga? Misalnya saya memiliki dua tindakan yang terkait dengan Pemberitahuan: batalkan dan lakukan. Ketika salah satu dari tindakan ini diambil, saya menghapus pemberitahuan. Tetapi melakukan ini hanya menghilangkan notifikasi tetapi baki notifikasi tetap terlihat.
Shajeel Afzal

1
1 Line, panggil id notifikasi: public void delNoti (int id) {((NotificationManager) getSystemService (Konteks.NOTIFICATION_SERVICE)). Cancel (id);}
phnghue

Anda tidak perlu ctx. NotificationManager nMgr = (NotificationManager) getSystemService (Konteks.NOTIFICATION_SERVICE);
canbax

61

Anda juga dapat memanggil cancelAllpengelola notifikasi, sehingga Anda bahkan tidak perlu khawatir tentang id notifikasi.

NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();

EDIT: Saya downvoted jadi mungkin saya harus menentukan bahwa ini hanya akan menghapus notifikasi dari aplikasi Anda.


tidak ada pengelola pemberitahuan untuk latar depan:startForeground(NOTIFICATION_ID, mNotification);
user924

12

cukup set setAutoCancel (True) seperti kode berikut:

Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);

PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
                GameLevelsActivity.this,
                0,
                resultIntent,
                PendingIntent.FLAG_UPDATE_CURRENT
                );

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        getApplicationContext()).setSmallIcon(R.drawable.icon)
        .setContentTitle(adv_title)
        .setContentText(adv_desc)
        .setContentIntent(resultPendingIntent)
         //HERE IS WHAT YOY NEED:
        .setAutoCancel(true);

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`

3
Ini hanya berfungsi jika Anda mengetuk notifikasi secara langsung. Mengetuk tindakan (seperti di sini: pl.vc/1gvrli ) tidak menghapus pemberitahuan.
baris1892

Ini bukan yang diminta. Pertanyaannya: "Saya perlu sampel cara menghapus pemberitahuan itu dari bilah pemberitahuan pada suatu acara ??"
David

12

ini akan membantu:

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

ini harus menghapus semua pemberitahuan yang dibuat oleh aplikasi

dan jika Anda membuat pemberitahuan dengan menelepon

startForeground();

di dalam suatu Layanan. Anda mungkin harus menelepon

stopForeground(false);

pertama, lalu batalkan notifikasi.


Jika memungkinkan, bisakah Anda menjawab pertanyaan ini juga? Saya melakukan hal yang sama seperti yang Anda sarankan, tetapi tidak bekerja untuk saya di Android 10. Klik di sini untuk pertanyaan
Maulik Dodia

7

Jika Anda menghasilkan Pemberitahuan dari Layanan yang dimulai di latar depan menggunakan

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Lalu mengeluarkan

notificationManager.cancel(NOTIFICATION_ID);

tidak berfungsi membatalkan Pemberitahuan & pemberitahuan masih muncul di bilah status. Dalam kasus khusus ini, Anda akan menyelesaikannya dengan 2 cara:

1> Menggunakan layanan dalam stopForeground (false):

stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);

2> Hancurkan kelas layanan itu dengan aktivitas menelepon:

Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
    ServiceCallingActivity.activity.finish();
}
context.stopService(i);

Cara kedua lebih memilih notifikasi pemutar musik karena cara tidak hanya menghapus notifikasi tetapi juga menghapus player ... !!


Terima kasih atas jawaban anda! Menggunakan stopForeground(true); manager.cancelAll();adalah yang memecahkannya untuk saya!
chenshuiluke

3

Silakan coba ini,

public void removeNotification(Context context, int notificationId) {      
    NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    nMgr.cancel(notificationId);
}

Jika memungkinkan, bisakah Anda menjawab pertanyaan ini juga? Saya melakukan hal yang sama seperti yang Anda sarankan, tetapi tidak bekerja untuk saya di Android 10. Klik di sini untuk pertanyaan
Maulik Dodia


2

NotificationManager.cancel(id)adalah jawaban yang benar. Namun Anda dapat menghapus di Android Oreo dan notifikasi nanti dengan menghapus seluruh saluran notifikasi. Ini harus menghapus semua pesan di saluran yang dihapus.

Berikut adalah contoh dari dokumentasi Android :

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);

1

Pada Android API> = 23 Anda dapat melakukan beberapa kegiatan seperti ini untuk menghapus sekelompok pemberitahuan.

  for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
        if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
            mNotificationManager.cancel(statusBarNotification.getId());
        }
    }

0

Panggil saja ID:

public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.