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)
通过这样做(第二种方法)我当然会覆盖除了频道名称之外的任何内容吗?
您应该像第一次创建频道一样重新创建频道.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)