查看文档我可以看到检查通知通道的所有属性的方法,但是我找不到检查通道本身是启用还是禁用的方法。
我错过了什么吗?
答案 0 :(得分:8)
Official Documentation有你的答案:
您可以调用以下两种方法来发现用户的设置 已申请通知渠道:
- o检索单个通知频道,您可以拨打
getNotificationChannel()
。- 要检索属于您应用的所有通知渠道,您可以致电
getNotificationChannels()
。拥有NotificationChannel之后,您可以使用诸如的方法
getVibrationPattern()
和getSound()
找出了什么设置 用户目前有。查看用户是否阻止了通知 频道,您可以拨打getImportance()
。如果通知渠道是 已屏蔽,getImportance()
返回 IMPORTANCE_NONE 。
因此,getImportance()
会告诉您通知渠道是否被阻止。
答案 1 :(得分:0)
这是我的完整代码:
public static boolean isNotificationChannelEnabled(@NonNull String groupId, @NonNull String... channelIds) {
boolean appNotificationEnable = NotificationManagerCompat.from(AppContext.getContext()).areNotificationsEnabled();
if (!appNotificationEnable) {
return false;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager manager = (NotificationManager) AppContext.getContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
List<NotificationChannelGroup> groupList = manager.getNotificationChannelGroups();
for (NotificationChannelGroup group : groupList) {
if (TextUtils.equals(group.getId(), groupId)) {
if (group.isBlocked()) {
return false;
}
}
}
}
for (String channelId : channelIds) {
NotificationChannel channel = manager.getNotificationChannel(channelId);
if (channel.getImportance() == NotificationManager.IMPORTANCE_NONE) {
return false;
}
}
return true;
}
return false;
}