从通知栏中删除所有通知

时间:2015-02-23 05:50:07

标签: android android-notifications

我想从状态栏中删除所有可取消的通知。我知道如何删除我之前看到此post的应用通知,但我想删除其他应用通知。

有一个" Clear"所有Android版本中的通知按钮,用该标志清除所有通知:Notification.FLAG_AUTO_CANCEL

这意味着可以取消所有通知。但我还没有找到任何关于如何做到这一点的文件。有没有人指导我怎么做?

由于

2 个答案:

答案 0 :(得分:15)

从API级别18开始,您可以使用NotificationListenerService取消与您自己的应用程序不同的其他应用程序发布的通知,Lollipop中的方法稍有改变,这里是删除Lillipop API的通知的方法。

首先在onNotificationPosted方法中存储所有StatusBarNotification个对象。 然后,您应该维护对这些对象的更新引用,如果在onNotificationRemoved方法中以某种方式解除了通知,则删除它们。

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class NotificationService extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        // Store each StatusBarNotification object
    }

    @Override
    public void onNotificationRemoved(StatusBarNotification sbn) {
        // Delete removed StatusBarNotification objects
    }
}

最后,您可以使用cancelNotification方法删除任何通知。

 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
    cancelNotification(sbn.getKey());
}

答案 1 :(得分:2)

要删除所有通知:

科特林

val NM = getSystemService(AppCompatActivity.NOTIFICATION_SERVICE) as NotificationManager
NM.cancelAll()

Java

NotificationManager NM = getSystemService(AppCompatActivity.NOTIFICATION_SERVICE) 
NM.cancelAll()