Android 在应用程序设置中禁用和启用后不显示提醒通知

Android heads-up notification not showing after disable and enable it on application settings

我在我的应用程序上做了提醒通知,它运行良好。
但是当我在我的应用程序通知设置中禁用 -> 启用它时,我再也看不到提示通知了。
(它仍然显示在通知栏上,并发出声音和振动,但不会在抬头显示)

-- logcat 消息说。

当应用程序被杀死并重新启动时,这个问题没有得到解决。
只有删除并重新安装应用程序才能再次正常工作。

有什么办法可以解决吗?

感谢您的宝贵时间。


已编辑

我在示例代码中发现了同样的问题
https://github.com/googlearchive/android-Notifications

在此应用程序中,将通知样式设置为 BIG_PICTURE_STYLE 并按下启动按钮。然后,您可以看到提醒通知,但是在应用程序通知设置中将“Sample Social”通知设置关闭 -> 打开后,您将无法再看到提醒通知。

这是预期的行为。当用户在通知设置中阻止特定通知渠道的通知时,该通知渠道的重要性就会降低。因此,通知横幅不会显示在设备顶部。用户将必须手动为通知渠道设置适当的设置。

这将被视为用户的偏好,不应从应用程序中强行更改。

如果出于某种原因您绝对需要通知才能使应用程序正常运行,您可以检测用户是否已禁用通知或通知渠道的重要性是否已更改并要求用户进行更改。检查 this

如果出于任何原因需要强制维护通知设置,您可以做的是删除通知渠道并重新创建具有适当重要性的通知渠道。

注意:如果您删除一个通知频道并使用相同的 ID 创建一个新频道,则删除的频道将 un-deleted 具有删除前的所有相同设置。因此,您需要使用新 ID 创建频道。

要检查应用程序的通知是否被阻止,请使用 NotificationManager.areNotificationsEnabled()Documentation

要检查通知渠道组的通知是否被阻止,请使用 NotificationChannelGroup.isBlocked()Documentation

检查通知渠道的重要性是否已更改:

  1. 对于API 26到API 28,使用NotificationChannel.getImportance()查看通知渠道重要性是否已更改。请注意,频道的重要性一旦创建就无法以编程方式更改。 Documentation
  2. 对于 API 29 岁及以上,使用 NotificationChannel.hasUserSetImportance()Documentation