0

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

-- logcat 消息说。

  • 在禁用/启用之前
    showForNotification :isInteractive=true, isHeadUp=true, color=0, sbn = StatusBarNotification...

  • 禁用/启用后
    showForNotification : isInteractive=true, isHeadUp= false , color=0, sbn = StatusBarNotification...

当应用程序被终止并重新启动时,此问题未解决。
只有在删除并重新安装应用程序后才能再次正常工作。

有什么办法可以解决吗?

谢谢你的时间。


已编辑

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

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

4

1 回答 1

1

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

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

如果出于某种原因您绝对需要通知来确保应用程序的正常运行,您可以检测用户是否禁用了通知,或者通知通道的重要性是否已更改,并要求用户进行更改。检查这个

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

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

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

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

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

  1. 对于 API 26 到 API 28,用于NotificationChannel.getImportance()查看通知通道重要性是否已更改。请注意,一旦创建了频道,就无法以编程方式更改频道的重要性。文档
  2. 对于 API 29 及更高版本,请使用NotificationChannel.hasUserSetImportance(). 文档
于 2020-08-28T17:48:54.557 回答