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

What is the correct way to update notification channel name?

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

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

我应该这样做吗?

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

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

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

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

您应该像第一次创建频道一样重新创建频道。 createNotificationChannel 命令将创建频道,如果它还没有被创建,它会更新频道,如果它已经被创建。

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

总而言之,通过声明:

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

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

notificationChannel.setDescription("new description"); //set that before creating the channel