更新通知通道名称的正确方法是什么?

问题描述 投票:0回答:1

我想根据区域设置更新通知通道名称。为此,我使用 BroadcastReceiver 并监听 ACTION_LOCALE_CHANGED 广播。

我的问题是更新名称的正确方法是什么?

我应该做这样的事情吗?

notificationManager.getNotificationChannel(CHANNEL_ID).setName(“newName”);

或者我应该像这样重新创建频道吗?

NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, “newName”, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(notificationChannel);

通过这样做(第二种方法),我当然会覆盖除频道名称之外的任何内容吗?

android android-8.0-oreo notification-channel
1个回答
26
投票

您应该像第一次创建频道一样重新创建频道。如果尚未创建通道,

createNotificationChannel
命令将创建通道;如果已创建通道,则将更新通道。

如果频道已创建,那么您唯一可以更改的就是频道的 name 和频道 description,没有其他内容。重要性将被忽略,因为用户可能已经手动更改了频道的重要性。然而,即使他们没有改变这一点,重要性仍然不会更新。这就是通知渠道的目的,例如让用户可以自由地管理他们的频道,而不会在应用程序更新时开发人员打扰他们。

总之,通过声明:

NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, “newName”, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(notificationChannel);

在已经创建的频道中,频道名称会更新,但重要性不会更新。如果您还想更新频道描述,您可以这样做:

notificationChannel.setDescription("new description"); //set that before creating the channel
© www.soinside.com 2019 - 2024. All rights reserved.