华为EMUI 8 Oreo - 通知渠道 - 铃声

9
一些用户报告说,在华为EMUI 8.0 Oreo上,通知渠道从应用程序中不具有更改音调“声音”/“通知音”的选项!根据官方文档,开发人员不能再更改设置。那么,我该如何为华为手机添加一个选项以再次更改“通知音”?是否有人知道为什么华为会移除这个功能呢?我找不到华为的官方文档,说明我们现在如何让用户更改通知音。此处是我参考的官方文档:https://developer.android.com/reference/android/app/NotificationChannel.html
https://developer.android.com/reference/android/app/NotificationChannel.html#setSound(android.net.Uri,android.media.AudioAttributes)
2个回答

2
我们最近遇到了同样的问题。虽然这不是一个好的解决方案,但 WhatsApp正在采用同样的方法。基本上,我们在应用中展示铃声选择,然后删除并重新创建通知通道,使用新的通道ID和所选铃声URI。您可以将大多数通道设置复制到新通道中,除了“勿扰模式”之外。
正如我所说,这不是一个好的解决方案,如果频繁重新创建通道会发生什么我也不知道。但希望铃声不会经常更改。
注意:通知设置屏幕显示已删除的通道数量,以防止垃圾邮件。

1
面对中文设备上的相同问题。首先,我有与@Devenias描述相同的解决方案。它在系统中的工作原理是:当您定义新通道时,NotificationService将此通道保存在xml中,在您更改它后,它仍然包含在此xml中。因此,在更改通道时,NotificationService将检查是否具有相同名称的通道,并仅检索它。因此,我一直使用新设置创建新通道,当用户在应用程序中更改振动或铃声时也是如此。它还像缓存一样工作,只需为pair<ringtone,vibration>创建唯一的通道名称即可。这个解决方案非常hacky,因为它在Honor,Huawei,Samsung设备和小米Mi A1上运行良好,但在小米Mi Mix 2上会导致NotificationService出现NullPointer并在SystemUI上崩溃(如果SystemUI服务崩溃,则设备会进行软重启),因此不要使用此解决方案。

因此,现在安全的解决方法是手动播放声音和振动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接