Bir bildirimi programatik olarak temizlemek mümkün müdür?
İle denedim NotificationManager
ama çalışmıyor. Bunu yapmamın başka bir yolu var mı?
Bir bildirimi programatik olarak temizlemek mümkün müdür?
İle denedim NotificationManager
ama çalışmıyor. Bunu yapmamın başka bir yolu var mı?
Yanıtlar:
Bir Bildirimi iptal etmek için aşağıdaki kodu kullanın:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
Bu kodda her zaman bildirimler için kullanılan aynı kimlik vardır. İptal edilmesi gereken farklı bildirimleriniz varsa, Bildirimi oluşturmak için kullandığınız kimlikleri kaydetmeniz gerekir.
setContentText
ettiğimde, önceliği 2'ye ayarlamama rağmen sonraki tüm bildirimler bildirim mesajı metnini (kullanmayı ayarladığım ) göstermiyor. Herhangi bir öneriniz var mı?
Gönderen: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Kullanıcı Bildirimler penceresinden bunu seçtiğinde durum çubuğu bildirimini temizlemek için Bildirim nesnenize "FLAG_AUTO_CANCEL" bayrağını ekleyin. Ayrıca cancel (int) ile manuel olarak temizleyebilir, bildirim kimliğini iletebilir veya cancelAll () ile tüm Bildirimlerinizi temizleyebilirsiniz.
Ancak Donal haklı, yalnızca kendi oluşturduğunuz bildirimleri temizleyebilirsiniz.
Kimse buna bir kod cevabı göndermediğinden:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. ve zaten işaretleriniz varsa, bunu VEYA FLAG_AUTO_CANCEL yapabilirsiniz:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
notifcation.flags |= Notification.FLAG_AUTO_CANCEL;
Lütfen NotificationManager'da sağlanan varsayılan yöntemi deneyin .
NotificationManager.cancelAll()
tüm bildirimleri kaldırmak için.
NotificationManager.cancel(notificationId)
belirli bildirimi kaldırmak için.
cancel
yönteme sahip olmayan birinin takılıp kalması durumunda, cancel
yöntem statik değildir, bu yüzden NotificationManager
bunun gibi bir örneğe ihtiyacınız var : NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
O zaman, notificationManager.cancel(notificationId);
cevabında referans gösterilen Rohit Suthar gibi çağrı yapabilirsiniz . notificationId
basitçe girdiğiniz kimliktirnotificationManager.notify(notificationId, mNotification)
API seviyesi 18'den (Jellybean MR2) başlayarak, NotificationListenerService aracılığıyla kendi bildiriminiz dışındaki Bildirimleri iptal edebilirsiniz.
@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 (doğru)
bildirime tıkladığınızda, ilgili etkinliği açın ve bildirim çubuğundan bildirimi kaldırın
Eğer NotificationCompat.Builder
(bir parçası android.support.v4
) kullanıyorsanız , basitçe nesnesinin yöntemini çağırınsetAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Bazıları setAutoCancel()
kendileri için işe yaramadığını bildirdi , bu yüzden siz de bu yolu deneyebilirsiniz
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Not yöntem getNotification()
kullanımdan kaldırıldı !!!
Kullanarak ön planda başlatılan bir Hizmetten Bildirim oluşturuyorsanız
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Sonra veren
notificationManager.cancel(NOTIFICATION_ID);
Bildirimi iptal etmez ve bildirim hala durum çubuğunda görünür. Bu özel durumda, yayınlamanız gerekecek
stopForeground( true );
arka plan moduna geri döndürmek ve aynı anda bildirimleri iptal etmek için hizmetin içinden. Alternatif olarak, bildirimi iptal ettirmeden arka plana itebilir ve ardından bildirimi iptal edebilirsiniz.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
// Get a notification builder that's compatible with platform versions
// >= 4
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSound(soundUri);
builder.setAutoCancel(true);
bu, bir bildirim oluşturucu kullanıyorsanız çalışır ...
AndroidX ve geriye dönük uyumluluk için en SON ve GÜNCELLENEN olduğuna inanıyorum . Bunu yapmanın en iyi yolu (Kotlin ve Java) şu şekilde yapılmalıdır:
NotificationManagerCompat.from(context).cancel(NOTIFICATION_ID)
Veya tüm bildirimleri iptal etmek için:
NotificationManagerCompat.from(context).cancelAll()
AndroidX veya Destek Kitaplıkları için yapılmıştır.
Aslında API Seviye 18 ile başlamadan önce yanıtlandığı gibi, NotificationListenerService kullanarak diğer uygulamaların gönderdiği Bildirimleri iptal edebilirsiniz, ancak bu yaklaşım artık Lollipop'ta çalışmayacaktır, Lillipop API'sini de kapsayan bildirimleri kaldırmanın yolu işte burada.
if (Build.VERSION.SDK_INT < 21) {
cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
cancelNotification(sbn.getKey());
}
cancelNotification
nedir?
NotificationListenerService Implementation'da belirtildiği gibi tüm bildirimler (diğer uygulama bildirimleri bile) 'NotificationListenerService' dinleyerek kaldırılabilir.
Serviste aramanız gerekir cancelAllNotifications()
.
Hizmet, uygulamanız için şu şekilde etkinleştirilmelidir:
'Uygulamalar ve bildirimler' -> 'Özel uygulama erişimi' -> 'Bildirim erişimi'.
bu kod benim için çalıştı:
public class ExampleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = 1;
notificationManager.cancel(notificationId);
}
}