gpt4 book ai didi

android - NotificationManager.cancel(id) 在广播接收器中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:33 27 4
gpt4 key购买 nike

Android:我正在尝试在安装包后取消通知栏中的通知。我正在做的是以下内容:

public class MyBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = "MyBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
Uri data = intent.getData();
//some code goes here
//get the id of the notification to cancel in some way
notificationhelper._completeNotificationManager.cancel(id);
}
}
}

在哪里

public class notificationhelper {
public static NotificationManager _completeNotificationManager = null;

public void complete() {
if (_completeNotificationManager == null)
_completeNotificationManager = (NotificationManager) _context.getSystemService(Context.NOTIFICATION_SERVICE);

Notification notification = new Notification(
R.drawable.notification,
_context.getString(R.string.notification),
System.currentTimeMillis());
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.flags |= Notification.FLAG_NO_CLEAR;
_completeNotificationManager.notify(TEXT, id, notification);
}
}

但是 notificationhelper._completeNotificationManager.cancel(id) 不起作用。我尝试使用 notificationhelper._completeNotificationManager.cancelAll(); 并且它有效。我做错了什么?

最佳答案

根据我的经验,无论标签如何,您都无法取消具有特定 ID 的所有通知。

也就是说,如果您像这样创建两个通知:

notificationManager.notify(TAG_ONE, SAME_ID, notification_one);
notificationManager.notify(TAG_TWO, SAME_ID, notification_two);

然后,notificationManager.cancel(SAME_ID) 不会取消其中任何一个!我怀疑这是因为“标记”字段如果在 notify() 和 cancel() 中未指定,则默认为 null,您必须显式取消它。

因此,要取消这两个通知,您必须调用:

notificationManager.cancel(TAG_ONE, SAME_ID);
notificationManager.cancel(TAG_TWO, SAME_ID);

在您的情况下,您提供“TEXT”作为标签,但仅使用 id 取消,默认使用 tag=null。

因此,要么不提供 TEXT 作为您的标签:

_completeNotificationManager.notify(id, notification);

或者,如果您需要单独的通知并且不希望它们相互干扰,请跟踪 Activity 标签:

_completeNotificationManager.notify(TEXT, id, notification);
collectionOfActiveTags.add(TEXT);

...

for (String activeTag : collectionOfActiveTags)
notificationhelper._completeNotificationManager.cancel(activeTag, id);

我希望您尝试做的事情得到支持,因为它似乎应该得到支持。

关于android - NotificationManager.cancel(id) 在广播接收器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13062798/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com