我想从状态栏中删除所有可取消的通知。我知道如何删除我之前看到此post的应用通知,但我想删除其他应用通知。
有一个" Clear"所有Android版本中的通知按钮,用该标志清除所有通知:Notification.FLAG_AUTO_CANCEL
这意味着可以取消所有通知。但我还没有找到任何关于如何做到这一点的文件。有没有人指导我怎么做?
由于
答案 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()