如何定义 NotificationChannel 是否被用户禁用 (API 26)?

How to define if NotificationChannel was disabled by user (API 26)?

我将我的代码更新为 API v26,设置了 NotificationChannels,我可以看到我的通知,但我有关于禁用通知的逻辑。 在 26 岁之前我有这样的东西:

NotificationManagerCompat.from(context).areNotificationsEnabled()

而且这个现在好像没什么用了。那么如何知道设置中是否禁用了通知通道?

我发现新的 ChannelNotification 方法并没有取代旧的逻辑,它增加了一层通知控制。 所以现在我们有 2 个场景,请参见屏幕截图:

  1. 您可以定义是否启用通知:

      NotificationManagerCompat.from(context).areNotificationsEnabled();
    
  2. 您可以定义您的通知是否对用户可见:

      NotificationManager notificationManager = (NotificationManager) 
      context.getSystemService(Context.NOTIFICATION_SERVICE);       
      NotificationChannel notificationChannel = 
      notificationManager.getNotificationChannel(channelId);      
      int importance = notificationChannel.getImportance();
    

如果重要性为 NotificationManager.IMPORTANCE_NONE,用户将看不到通知,但通知就在那里,因此您可以将它与前台服务一起使用,您应该将其关闭。如果重要性为 NotificationManager.IMPORTANCE_MIN 或更高,用户将看到通知。