9

我想根据 Locale 更新通知频道名称。为了做到这一点,我正在使用 BroadcastReceiver 并监听 ACTION_LOCALE_CHANGED 广播。

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

我应该做这样的事情吗?

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

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

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

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

4

1 回答 1

17

您应该像第一次创建通道一样重新创建通道。如果频道尚未创建,该createNotificationChannel命令将创建该频道,如果频道已创建,该命令将更新该频道。

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

总而言之,通过声明:

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

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

notificationChannel.setDescription("new description"); //set that before creating the channel
于 2018-02-01T18:20:08.600 回答