如何定义 NotificationChannel 是否被用户禁用 (API 26)?
How to define if NotificationChannel was disabled by user (API 26)?
我将我的代码更新为 API v26,设置了 NotificationChannels,我可以看到我的通知,但我有关于禁用通知的逻辑。
在 26 岁之前我有这样的东西:
NotificationManagerCompat.from(context).areNotificationsEnabled()
而且这个现在好像没什么用了。那么如何知道设置中是否禁用了通知通道?
我发现新的 ChannelNotification
方法并没有取代旧的逻辑,它增加了一层通知控制。
所以现在我们有 2 个场景,请参见屏幕截图:
您可以定义是否启用通知:
NotificationManagerCompat.from(context).areNotificationsEnabled();
您可以定义您的通知是否对用户可见:
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel notificationChannel =
notificationManager.getNotificationChannel(channelId);
int importance = notificationChannel.getImportance();
如果重要性为 NotificationManager.IMPORTANCE_NONE
,用户将看不到通知,但通知就在那里,因此您可以将它与前台服务一起使用,您应该将其关闭。如果重要性为 NotificationManager.IMPORTANCE_MIN
或更高,用户将看到通知。
我将我的代码更新为 API v26,设置了 NotificationChannels,我可以看到我的通知,但我有关于禁用通知的逻辑。 在 26 岁之前我有这样的东西:
NotificationManagerCompat.from(context).areNotificationsEnabled()
而且这个现在好像没什么用了。那么如何知道设置中是否禁用了通知通道?
我发现新的 ChannelNotification
方法并没有取代旧的逻辑,它增加了一层通知控制。
所以现在我们有 2 个场景,请参见屏幕截图:
您可以定义是否启用通知:
NotificationManagerCompat.from(context).areNotificationsEnabled();
您可以定义您的通知是否对用户可见:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel notificationChannel = notificationManager.getNotificationChannel(channelId); int importance = notificationChannel.getImportance();
如果重要性为 NotificationManager.IMPORTANCE_NONE
,用户将看不到通知,但通知就在那里,因此您可以将它与前台服务一起使用,您应该将其关闭。如果重要性为 NotificationManager.IMPORTANCE_MIN
或更高,用户将看到通知。