如何正确更新通知频道android oreo

时间:2018-09-17 08:54:58

标签: android notifications notification-channel

创建通知频道后,我正尝试对其进行更新。即,我想正确设置通知声音,但是在创建之后。我真的不知道该怎么做。

我试图删除频道并重新创建频道,但似乎无法正常工作...

if (notificationManager != null) {
            notificationManager.deleteNotificationChannel(NOTIFICATION_CHANNEL_ID);
            notificationManager.createNotificationChannel(channel);
            System.out.println("Created notification channel" + channel.getSound() + " " + channel.getImportance());
        }

2 个答案:

答案 0 :(得分:1)

创建通知通道后,用户可以对其设置进行最终控制。作为开发人员,您只能更改频道的标题和说明。如果要重新创建频道,则必须使用其他ID。

请参阅:https://developer.android.com/training/notify-user/channels

答案 1 :(得分:1)

就像其他答案中所述,这是正确的,您只能在创建频道后更改其名称和说明。但是,正如您在代码中指出的那样,您可以删除通道,然后再次创建它。但是,如果您再次创建相同的通道但更改了某些内容(例如声音),它将无法正常工作。我假设Android阻止这种更改的方式与尝试在已存在的情况下创建它的方式相同。因此,Android必须具有跟踪所有已删除频道的方法(换句话说,它们并未完全删除)。

如果您查看WhatsApp,则可以从应用程序内部更改声音,如果进行一些调查,您会发现它们确实正在删除和创建频道。

那你该怎么办?您可以做的是可以更改新通知通道的ID。也许添加足够大的随机元素会阻止您两次拥有相同的ID。或增加某些内容并将该信息存储在您的应用程序中(偏好或数据库或其他内容)。如果“重新创建的”频道具有新的ID,Android将接受您的“更改”。由于您没有更改现有频道,因此您正在创建一个全新的频道。而且,如果您保留其余所有用户可见的信息(例如名称,说明等),则用户将不会注意到这一点,而只会体验到该通知(通道)类型的声音已从应用程序中更改。

有什么缺点吗?好吧,一个次要的是Android将在App通知设置中显示删除频道的次数(以警告用户“垃圾邮件”)。我认为没有多少用户对此表示关注。而且您还偏离了Android想要的设计(可能完全不希望用户对通道进行完全控制)。

所以从描述用例的角度来看,我认为以这种方式完成您想要的事情是很公平的:)