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

Adr*_*lar 3 notifications android notification-channel

我正在尝试在创建通知渠道后更新它。也就是说,我想正确设置通知声音,但是在我创建之后。我真的想不出正确的方法来做到这一点。

我尝试的是删除频道并重新创建它,但它似乎不起作用......

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

Flo*_*her 6

创建通知渠道后,用户对其设置拥有最终控制权。作为开发者,您只能更改频道的标题和描述。如果要重新创建频道,则必须使用不同的 ID。

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


pop*_*ppe 5

正如另一个答案中所述,您只能在创建频道后更改其名称和描述,这是正确的。但是,正如您在代码中指出的那样,您可以删除该频道,然后重新创建它。但是,如果您再次创建相同的频道但更改了某些内容,例如声音,它将无法正常工作。我假设 Android 正在以相同的方式阻止该更改,如果您尝试在它已经存在时创建它。所以Android必须有办法跟踪所有被删除的频道(换句话说,它们没有被完全删除)。

如果您查看 WhatsApp,它们允许您从应用程序内部更改声音,如果您稍微调查一下,您会发现它们确实在删除和创建频道。

所以,你可以做什么?您可以做的是更改新通知渠道的 ID。也许添加一个足够大的随机元素会阻止您两次使用相同的 ID。或者增加一些内容并将该信息存储在您的应用程序中(首选项或数据库或其他内容)。如果“重新创建”频道有一个新 ID,Android 将接受您的“更改”。由于您没有更改现有频道,因此您正在创建一个全新的频道。如果您保持其余的用户可见信息完整无缺(例如名称、描述等),那么用户将不会注意到这一点,而只会体验到该类型通知(频道)的声音是从应用程序内部更改的。

有什么缺点吗?嗯,一个超级小问题是 Android 将在应用程序通知设置中显示频道已被删除的次数(以提醒用户“垃圾邮件”)。我不认为很多用户关心这个。而且您还偏离了 Android 想要的设计(用户对频道的完全控制),这可能是不可取的。

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