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

not*_*eek 5 android android-8.0-oreo notification-channel

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

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

我应该这样做吗?

notificationManager.getNotificationChannel(CHANNEL_ID).setName(“newName”);
Run Code Online (Sandbox Code Playgroud)

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

NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, “newName”, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(notificationChannel);
Run Code Online (Sandbox Code Playgroud)

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

ste*_*osf 6

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

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

总而言之,通过声明:

NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, “newName”, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(notificationChannel);
Run Code Online (Sandbox Code Playgroud)

在已创建的频道中,将更新频道的名称,但不会更新频道的名称.如果您还想更新频道说明,可以这样做:

notificationChannel.setDescription("new description"); //set that before creating the channel
Run Code Online (Sandbox Code Playgroud)

  • 我认为很高兴知道降低频道的重要性也会起作用,但前提是用户之前没有手动更改重要性。 (5认同)