4

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

我尝试的是删除频道并重新创建它,但它似乎没有工作......

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

2 回答 2

8

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

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

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

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

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

于 2020-02-12T15:14:46.963 回答
6

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

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

于 2018-11-09T10:21:12.297 回答