从通知栏中删除所有通知

Mil*_*nia 6 android android-notifications

我想从状态栏中删除所有可取消的通知.我知道如何删除我之前看过这篇文章的应用程序通知,但我想删除其他应用程序通知.

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

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

谢谢

Ale*_*ova 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 官方文档:http://developer.android.com/reference/android/service/notification/NotificationListenerService.html#cancelNotification(java.lang.String)了解该调用的局限性会很有趣.是否允许取消所有类型的通知(例如OnGoing)? (2认同)