我想根据区域设置更新通知通道名称。为此,我使用 BroadcastReceiver 并监听 ACTION_LOCALE_CHANGED 广播。
我的问题是更新名称的正确方法是什么?
我应该做这样的事情吗?
notificationManager.getNotificationChannel(CHANNEL_ID).setName(“newName”);
或者我应该像这样重新创建频道吗?
NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, “newName”, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(notificationChannel);
通过这样做(第二种方法),我当然会覆盖除频道名称之外的任何内容吗?
您应该像第一次创建频道一样重新创建频道。如果尚未创建通道,
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