Apakah mungkin untuk menghapus notifikasi secara terprogram?
Saya mencobanya dengan NotificationManager
tetapi tidak berhasil. Apakah ada cara lain yang bisa saya lakukan?
Apakah mungkin untuk menghapus notifikasi secara terprogram?
Saya mencobanya dengan NotificationManager
tetapi tidak berhasil. Apakah ada cara lain yang bisa saya lakukan?
Jawaban:
Gunakan kode berikut untuk membatalkan Pemberitahuan:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
Dalam kode ini selalu ada id yang sama yang digunakan untuk notifikasi. Jika Anda memiliki pemberitahuan berbeda yang perlu dibatalkan, Anda harus menyimpan id yang Anda gunakan untuk membuat Pemberitahuan.
setContentText
) meskipun saya menetapkan prioritas ke 2. Ada saran?
Dari: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Untuk menghapus pemberitahuan bilah status saat pengguna memilihnya dari jendela Pemberitahuan, tambahkan tanda "FLAG_AUTO_CANCEL" ke objek Pemberitahuan Anda. Anda juga dapat menghapusnya secara manual dengan cancel (int), meneruskan ID notifikasi, atau menghapus semua Notifikasi Anda dengan cancelAll ().
Tetapi Donal benar, Anda hanya dapat menghapus pemberitahuan yang Anda buat.
Karena tidak ada yang memposting kode jawaban untuk ini:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. dan jika Anda sudah memiliki bendera, Anda dapat ATAU FLAG_AUTO_CANCEL seperti ini:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
notifcation.flags |= Notification.FLAG_AUTO_CANCEL;
Silakan coba metode default yang diberikan ke NotificationManager .
NotificationManager.cancelAll()
untuk menghapus semua notifikasi.
NotificationManager.cancel(notificationId)
untuk menghapus pemberitahuan tertentu.
cancel
metode, cancel
metode ini tidak statis, jadi Anda memerlukan contoh NotificationManager
seperti ini: NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Kemudian Anda dapat memanggil notificationManager.cancel(notificationId);
seperti Rohit Suthar yang direferensikan dalam jawabannya. notificationId
hanyalah ID yang Anda notificationManager.notify(notificationId, mNotification)
Dimulai dengan API level 18 (Jellybean MR2), Anda dapat membatalkan Notifikasi selain milik Anda sendiri melalui NotificationListenerService.
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class MyNotificationListenerService extends NotificationListenerService {...}
...
private void clearNotificationExample(StatusBarNotification sbn) {
myNotificationListenerService.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
Notification mNotification = new Notification.Builder(this)
.setContentTitle("A message from: " + fromUser)
.setContentText(msg)
.setAutoCancel(true)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.build();
.setAutoCancel (true)
ketika Anda mengklik notifikasi, buka aktivitas yang sesuai dan hapus notifikasi dari bilah notifikasi
Jika Anda membuat Pemberitahuan dari Layanan yang dimulai di latar depan menggunakan
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Kemudian menerbitkan
notificationManager.cancel(NOTIFICATION_ID);
tidak berakhir dengan membatalkan Pemberitahuan, dan pemberitahuan masih muncul di bilah status. Dalam kasus khusus ini, Anda perlu mengeluarkan
stopForeground( true );
dari dalam layanan untuk mengembalikannya ke mode latar belakang dan sekaligus membatalkan notifikasi. Bergantian, Anda dapat mendorongnya ke latar belakang tanpa harus membatalkan pemberitahuan dan kemudian membatalkan pemberitahuan.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
Jika Anda menggunakan NotificationCompat.Builder
(bagian dari android.support.v4
) maka cukup panggil metode objeknyasetAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Beberapa pria melaporkan bahwa setAutoCancel()
tidak berhasil untuk mereka, jadi Anda dapat mencoba cara ini juga
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Perhatikan bahwa metode getNotification()
ini tidak digunakan lagi !!!
// Get a notification builder that's compatible with platform versions
// >= 4
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSound(soundUri);
builder.setAutoCancel(true);
ini berfungsi jika Anda menggunakan pembuat notifikasi ...
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager Nmang = (NotificationManager) getApplicationContext()
.getSystemService(ns);
Nmang .cancel(getIntent().getExtras().getInt("notificationID"));
untuk referensi lebih lanjut klik di sini http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-android.html
Sebenarnya seperti yang dijawab sebelum memulai dengan API Level 18 Anda dapat membatalkan Notifikasi yang diposting oleh aplikasi lain yang berbeda dari milik Anda menggunakan NotificationListenerService tetapi pendekatan itu tidak akan berfungsi lagi di Lollipop, berikut adalah cara untuk menghapus notifikasi yang juga mencakup API Lillipop.
if (Build.VERSION.SDK_INT < 21) {
cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
cancelNotification(sbn.getKey());
}
cancelNotification
apa itu?
Semua notifikasi (bahkan notifikasi aplikasi lainnya) dapat dihapus dengan mendengarkan 'NotificationListenerService' seperti yang disebutkan dalam NotificationListenerService Implementation
Dalam layanan, Anda harus menelepon cancelAllNotifications()
.
Layanan harus diaktifkan untuk aplikasi Anda melalui:
'Aplikasi & notifikasi' -> 'Akses aplikasi khusus' -> 'Akses notifikasi'.
kode ini bekerja untuk saya:
public class ExampleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = 1;
notificationManager.cancel(notificationId);
}
}
Saya percaya yang paling TERBARU dan DIPERBARUI untuk AndroidX dan kompatibilitas mundur. Cara terbaik untuk melakukannya (Kotlin dan Java) harus dilakukan sebagai:
NotificationManagerCompat.from(context).cancel(NOTIFICATION_ID)
Atau untuk membatalkan semua notifikasi adalah:
NotificationManagerCompat.from(context).cancelAll()
Dibuat untuk AndroidX atau Pustaka Dukungan.