如何在Android中清除通知
是否有可能以编程方式清除通知?
我用NotificationManager
试过了,但没有成功。 有没有其他办法可以做到这一点?
使用以下代码取消通知:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(NOTIFICATION_ID);
在这个代码中总是有用于通知的相同的id。 如果您需要取消不同的通知,则必须保存用于创build通知的ID。
来自: http : //developer.android.com/guide/topics/ui/notifiers/notifications.html
要在用户从“通知”窗口中select状态栏通知时清除状态栏通知,请将“FLAG_AUTO_CANCEL”标志添加到通知对象。 您也可以使用cancel(int)手动清除它,将通知ID传递给它,或使用cancelAll()清除所有通知。
但Donal是正确的,你只能清除你创build的通知。
由于没有人发布代码的答案:
notification.flags = Notification.FLAG_AUTO_CANCEL;
..如果你已经有旗帜,你可以或者FLAG_AUTO_CANCEL像这样:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
从API级别18(Jellybean MR2)开始,您可以通过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()); }
请尝试在NotificationManager中提供的默认方法。
NotificationManager.cancelAll()
删除所有通知。 NotificationManager.cancel(notificationId)
删除特定的通知。
如果您使用NotificationCompat.Builder
( android.support.v4
的一部分),那么只需调用其对象的方法setAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setAutoCancel(true);
有些人报告说setAutoCancel()
不适合他们,所以你也可以尝试这种方式
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
请注意, getNotification()
方法已被弃用 !
String ns = Context.NOTIFICATION_SERVICE; NotificationManager Nmang = (NotificationManager) getApplicationContext() .getSystemService(ns); Nmang .cancel(getIntent().getExtras().getInt("notificationID"));
更多的参考请点击这里http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-android.html
实际上,在开始使用API Level 18之前,您可以取消由其他应用程序发布的通知,而不是使用NotificationListenerService,但这种方法将不再适用于Lollipop,这里是删除通知的方法,其中还包括Lillipop API。
if (Build.VERSION.SDK_INT < 21) { cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId()); } else { cancelNotification(sbn.getKey()); }
如果您正在使用在前台启动的服务生成通知
startForeground(NOTIFICATION_ID, notificationBuilder.build());
然后发行
notificationManager.cancel(NOTIFICATION_ID);
不会最终取消通知,并且通知仍然出现在状态栏中。 在这个特殊的情况下,你需要问题
stopForeground( true );
从服务内部将其放回后台模式并同时取消通知。 或者,您可以将其推入后台,而不必取消通知,然后取消通知。
stopForeground( false ); notificationManager.cancel(NOTIFICATION_ID);
Notification mNotification = new Notification.Builder(this) .setContentTitle("A message from: " + fromUser) .setContentText(msg) .setAutoCancel(true) .setSmallIcon(R.drawable.app_icon) .setContentIntent(pIntent) .build();
.setAutoCancel(真)
当您点击通知时,打开相应的活动并从通知栏中删除通知
// Get a notification builder that's compatible with platform versions // >= 4 NotificationCompat.Builder builder = new NotificationCompat.Builder( this); builder.setSound(soundUri); builder.setAutoCancel(true);
如果你使用通知生成器
- 在Chrome或Firefox中从封闭的networking应用程序发送桌面通知?
- Android通知中的图标大小是多less?
- Android – build立通知,TaskStackBuilder.addParentStack不能正常工作
- 目标C:在哪里删除NSNotification的观察者?
- Uri默认声音通知?
- 像Google一样的Actionbar通知计数图标(徽章)
- 如果您已经在桌面上阅读,Facebook Messenger如何从locking屏幕清除推送通知?
- 如何解决“在Xcode 4.3中找不到有效的”aps-environment“授权string?
- cocoa – 通知NSUserDefaults值的变化?