Android 取消/取消图标上的通知

Android 取消/取消图标上的通知,android,onesignal,Android,Onesignal,我正在使用OneSignal向用户显示通知。通知工作正常,但我注意到,如果我在通知栏中取消“刷”通知,则通知将永远保留,下面的图像显示了应用程序图标上的通知,我希望在应用程序打开后立即取消该通知: 我看到了这个问题,表明我可以通过以下方式撤销通知: NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (nMgr!=null) { nMgr.

我正在使用OneSignal向用户显示通知。通知工作正常,但我注意到,如果我在通知栏中取消“刷”通知,则通知将永远保留,下面的图像显示了应用程序图标上的通知,我希望在应用程序打开后立即取消该通知:

我看到了这个问题,表明我可以通过以下方式撤销通知:

NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (nMgr!=null) {
    nMgr.cancelAll();
}
但这会取消通知栏中的通知,但应用程序图标上的通知仍然存在,知道我如何在应用程序打开后立即取消通知吗

编辑1:


我在下面的回答中提到的
OnCreate
,以及
OnResume
中添加了上述内容,但是
1
仍然显示在应用程序图标上。

上述代码非常完美,但您需要做的是将此代码添加到
OnResume()中。


这就是你的窍门。:)

我发现使用OneSignal,我可以通过在清单中添加以下内容来禁用徽章:

<application ...>

    <meta-data android:name="com.onesignal.BadgeCount" android:value="DISABLE" />

</application>

使用library,我还可以在禁用徽章编号后手动设置徽章编号。注意,这只支持某些制造的设备(三星、LG、索尼和HTC)。

使用此功能,它在导航栏中被取消,但
1
仍保留在图标上。@KunalNikam你的答案和问题中的问题/所说的有什么区别?@HB.在对任何人的答案进行否决之前做一些研究相同的代码对我有效这就是为什么我把它放在这里,在发布问题时他没有提到在哪里确切地说,他在我的回答后放了上面的代码,他编辑了这个问题,在上面的评论中,他清楚地说他在oncreate中使用了它。所以,在把任何东西放在这里之前,先做一些研究。@KunalNikam在他的问题中说,他完全按照你说的去做。我有完全相同的问题,如果你去阅读单信号文档,你会发现@ClassA是正确的。此外,您还声明他应该在
onResume
中使用它,而不是在
onCreate
中使用它-您可以解释原因。我不明白为什么把它放在简历上会有不同。
<application ...>

    <meta-data android:name="com.onesignal.BadgeCount" android:value="DISABLE" />

</application>
String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.createNotificationChannel(mChannel);