Android: bildirimi bildirim çubuğundan kaldır


Yanıtlar:


182

Bu oldukça basit. NotificationManager'ınızı aramanız cancelveya yapmanız gerekir cancelAll. Cancel yönteminin parametresi, iptal edilmesi gereken bildirimin kimliğidir.

API'ya bakın: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)


Teşekkürler Roflcoptr :) Burada buldum: stackoverflow.com/questions/2839727/…
Nezir

3
özel statik son int MY_NOTIFICATION_ID = 1234; String ns = Bağlam.NOTIFICATION_SERVICE; NotificationManager mNotificationManager; mNotificationManager = (NotificationManager) getSystemService (ns); mNotificationManager.notify (MY_NOTIFICATION_ID, bildirim); Örnek kod tam değil. Bildiriminizi nasıl oluşturduğunuza bağlıdır. Bildiriminizi oluştururken kullandığınız bildirimi iptal etmek için aynı kimliği kullandığınızdan emin olun. İptal etmek için: mNotificationManager.cancel (MY_NOTIFICATION_ID);
Nezir

Senin gibi insanları karmaşık cevaplar olmasa da, zor günlerde bize çok yardımcı olan günü kurtardın! Çok teşekkür ederim.
e-info128

public void delNoti (int id) {((NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE)). cancel (id);}
phnghue

1
sistem tarafından oluşturulan bildirimlere ne olacak?
Zaid Mirza

220

Bu hızlı kodu deneyebilirsiniz

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

19
Bu doğru cevap olmalı, çünkü basit, doğru ve doğrudan konuya ulaşıyor.
ZeroTek

1
Merhaba bu doğru cevap. Ancak Bildirim Tepsisi görünür kalır. Onu da gizlemenin bir yolu var mı? Örneğin, Bildirim ile ilişkili iki eylemim var: iptal et ve bitti. Bu işlemlerden biri yapıldığında, bildirimi kaldırıyorum. Ancak bunu yaptığınızda yalnızca bildirim kaldırılır, ancak bildirim tepsisi görünür kalır.
Shajeel Afzal

1
1 Satır, yalnızca bildirim kimliğini arayın: public void delNoti (int id) {((NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE)). Cancel (id);}
phnghue 6:18 '

ctx'e ihtiyacınız yok. NotificationManager nMgr = (NotificationManager) getSystemService (Bağlam.NOTIFICATION_SERVICE);
canbax

61

cancelAllBildirim yöneticisini de arayabilirsiniz , böylece bildirim kimlikleri hakkında endişelenmenize bile gerek kalmaz.

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

DÜZENLEME: Ben aşağı reddedildi bu yüzden belki de sadece bildirim uygulamanızdan kaldırılacağını belirtmeliyim.


ön plan için bildirim yöneticisi yok:startForeground(NOTIFICATION_ID, mNotification);
user924

12

setAutoCancel (True) öğesini aşağıdaki kod gibi ayarlamanız yeterlidir:

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
Bu yalnızca bildirime doğrudan dokunursanız çalışır. Eyleme dokunmak (burada olduğu gibi: pl.vc/1gvrli ) bildirimi kaldırmaz.
baris1892

İstenen bu değil. Soru: "Bir olayın bildirim çubuğundan bu bildirimi nasıl kaldıracağım örnek gerekir ??"
David

12

Bu yardımcı olacak:

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

bunun uygulama tarafından yapılan tüm bildirimleri kaldırması gerekir

ve arayarak bir bildirim oluşturursanız

startForeground();

Bir Servisin içinde. aramak zorunda kalabilirsiniz

stopForeground(false);

önce bildirimi iptal edin.


Mümkünse bu soruya da cevap verebilir misiniz? Önerdiğinizle aynı şeyi yaptım, ancak Android 10'da benim için çalışmıyor. Soru için tıklayın
Maulik Dodia

7

Eğer üreten Eğer bir Hizmeti'nden Bildirim başlatılır ön planda kullanarak

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Sonra

notificationManager.cancel(NOTIFICATION_ID);

durum çubuğunda Bildirim ve bildirim görünmeye devam ederse iptal çalışmıyor. Bu özel durumda, bunları 2 yolla çözeceksiniz:

1> hizmet içinde stopForeground (yanlış) kullanma:

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

2> Arama sınıfıyla bu hizmet sınıfını yok edin:

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

İkinci şekilde müzik çalar bildirimde tercih edin çünkü thay yolu sadece bildirim kaldırmaz, aynı zamanda oynatıcıyı da kaldırır ... !!


Cevabınız için teşekkürler! stopForeground(true); manager.cancelAll();Bunu benim için çözen şey kullanmak !
16:54, chenshuiluke

3

Lütfen bunu deneyin,

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

Mümkünse bu soruya da cevap verebilir misiniz? Önerdiğinizle aynı şeyi yaptım, ancak Android 10'da benim için çalışmıyor. Soru için tıklayın
Maulik Dodia


2

NotificationManager.cancel(id)doğru cevaptır. Yine de , tüm bildirim kanalını silerek Android Oreo ve sonraki bildirimleri kaldırabilirsiniz . Bu, silinen kanaldaki tüm mesajları silmelidir.

İşte Android belgelerinden örnek :

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

1

Android API> = 23'de bir grup bildirimi kaldırmak için böyle bir şey yapabilirsiniz.

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

0

Sadece çağrı kimliği:

public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.