我可以检查通道是否已启用/禁用
NotificationChannel channel = manager.getNotificationChannel(channelId);
boolean isEnabled = channel.getImportance() != IMPORTANCE_NONE;
但是如果通道未启用,那么我想通过将其设置为 IMPORTANCE_HIGH 来启用它
if (!isEnabled) {
channel.setImportance(NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(channel);
}
问题是频道没有更新,只有当我尝试使用 IMPORTANCE_NONE 禁用它(以防其启用)时它才有效,但不是这样。
我尝试删除频道并创建一个具有不同 id 的新频道,这可行,但不能创建具有相同 id 的新频道。
如何解决这个问题?
您无法在不删除频道的情况下以编程方式更改频道重要性。
因为用户可能手动更改了重要性。
以编程方式实现此目的,以获取频道并使用新 ID 创建新频道。 删除旧频道。 如果使用以前的 id 创建频道,您的更改将不会反映
供参考,检查 WhatsApp 应用程序尝试从应用程序更改铃声并在左下角的频道中查看x频道已删除消息
当通知通道被禁用时,您所能做的就是要求用户启用它。您可以将用户直接导航至频道设置屏幕。
fun openNotificationChannelSettings(context: Context, channelId: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
intent.putExtra(Settings.EXTRA_CHANNEL_ID, channelId)
context.startActivity(intent)
}
}