【问题标题】:Enable notification channels programmatically以编程方式启用通知渠道
【发布时间】:2018-11-17 11:55:38
【问题描述】:

我可以检查频道是否启用/禁用

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 的新频道。

如何解决这个问题?

【问题讨论】:

  • 如果频道可以通过第三方应用启用/禁用。那么拥有频道的用例是什么?您无法更改频道优先级。
  • 您可能只能操纵自己应用的频道。不是其他应用程序。看起来可以通过编程方式禁用它们,将重要性设置为 NONE

标签: java android android-notifications android-8.0-oreo android-settings


【解决方案1】:

您无法在不删除频道的情况下以编程方式更改频道重要性。

因为用户可能已经手动更改了重要性。

以编程方式实现此目的以获取频道并使用新 ID 创建新频道。 删除旧频道。 如果使用以前的 id 创建频道,您的更改将不会反映出来

作为参考检查 WhatsApp 应用程序尝试从应用程序更改铃声并在左下角的频道中查看 x 频道已删除消息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2012-12-03
    相关资源
    最近更新 更多