是否可以取消所有具有特定标签的通知?
Is it possible to cancel all notifications that have a certain tag?
我正在制作一个 android 应用程序,我想取消所有具有特定标签的通知。
现在似乎只能通过他们的 id (int id) 或者他们的 id 和标签来取消通知。
mNotificationManager.cancel(int id);
或
mNotificationManager.cancel(字符串标签, int id);
我希望能够取消String标签的所有通知,而不管int id。
这可能吗?
不,不是。 Notification的设置方式,id为主键。您可以添加带有标签的子项,并以这种方式取消单个 (tag, id) 对,但您不能仅基于标签取消。真的,我不确定他们为什么要添加一个标签参数,因为它看起来很冗余,除了可能是一个字符串参数可以使调试更容易。
在 Android 上使用 API >= 23 你可以做这样的事情来删除一组通知:
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}
如果您使用通知组,似乎是可行的。取消群摘要通知好像是把整个群都取消了。
是的,有可能
- 使用
mNotificationManager.getActiveNotifications()
获取您的应用生成的所有活动通知
- 根据 TAG 过滤通知。
- 取消那些通知。
试试下面的代码
void cancelGivenTagNotification(String tag){
StatusBarNotification notiList[] = notificationManager.getActiveNotifications();
for(int i=0;i<notiList.length;i++){
if(notiList[i].getTag().equals(tag)){
int notiId = notiList[i].getId();
notificationManager.cancel(tag,notiId);
}
}
}
我正在制作一个 android 应用程序,我想取消所有具有特定标签的通知。
现在似乎只能通过他们的 id (int id) 或者他们的 id 和标签来取消通知。
mNotificationManager.cancel(int id);
或
mNotificationManager.cancel(字符串标签, int id);
我希望能够取消String标签的所有通知,而不管int id。
这可能吗?
不,不是。 Notification的设置方式,id为主键。您可以添加带有标签的子项,并以这种方式取消单个 (tag, id) 对,但您不能仅基于标签取消。真的,我不确定他们为什么要添加一个标签参数,因为它看起来很冗余,除了可能是一个字符串参数可以使调试更容易。
在 Android 上使用 API >= 23 你可以做这样的事情来删除一组通知:
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}
如果您使用通知组,似乎是可行的。取消群摘要通知好像是把整个群都取消了。
是的,有可能
- 使用
mNotificationManager.getActiveNotifications()
获取您的应用生成的所有活动通知
- 根据 TAG 过滤通知。
- 取消那些通知。
试试下面的代码
void cancelGivenTagNotification(String tag){
StatusBarNotification notiList[] = notificationManager.getActiveNotifications();
for(int i=0;i<notiList.length;i++){
if(notiList[i].getTag().equals(tag)){
int notiId = notiList[i].getId();
notificationManager.cancel(tag,notiId);
}
}
}