Saya telah membuat aplikasi dan dengan acara saya berhasil menambahkan notifikasi di bilah notifikasi android. Sekarang saya perlu sampel bagaimana menghapus pemberitahuan itu dari bilah notifikasi pada suatu acara ??
Saya telah membuat aplikasi dan dengan acara saya berhasil menambahkan notifikasi di bilah notifikasi android. Sekarang saya perlu sampel bagaimana menghapus pemberitahuan itu dari bilah notifikasi pada suatu acara ??
Jawaban:
Ini cukup sederhana. Anda harus menelepon cancel
atau cancelAll
di NotificationManager Anda. Parameter metode pembatalan adalah ID pemberitahuan yang harus dibatalkan.
Lihat API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
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);
}
Anda juga dapat memanggil cancelAll
pengelola 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.
startForeground(NOTIFICATION_ID, mNotification);
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());`
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 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 ... !!
stopForeground(true); manager.cancelAll();
adalah yang memecahkannya untuk saya!
Silakan coba ini,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Gunakan NotificationManager untuk membatalkan pemberitahuan Anda. Anda hanya perlu memberikan id notifikasi Anda
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
periksa juga tautan ini Lihat Tautan Pengembang
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);
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());
}
}