我在运行 Android Oreo 的设备中遇到了 NotificationChannel 声音这个奇怪的问题。
假设我的项目原始目录中有两个声音文件:
a.mp3
c.mp3
然后在第一次安装应用程序时,我使用它们的 uri 将这些声音分配给不同的通知通道(例如):
android.resource://myapp/2131558403 (for sound a.mp3)
android.resource://myapp/2131558404 (for sound c.mp3)
在这一点上,一切都按预期工作。当我开始添加新声音(在前面或中间)时出现问题:
a.mp3
B.mp3 <- new file
c.mp3
然后相应地更改文件的资源 ID:
android.resource://myapp/2131558403 (for sound a.mp3)
android.resource://myapp/2131558404 (for sound B.mp3)
android.resource://myapp/2131558405 (for sound c.mp3)
所以此时我的第二个通知通道开始播放 B.mp3 声音文件而不是 c.mp3,因为它是使用 android.resource://myapp/ 2131558404 uri 初始化的。
在使用新的声音文件编译应用程序后,c.mp3 的资源 ID 发生了变化。
那么这个问题的解决方案是什么,因为在创建通知通道后我无法修改它。
最明显的解决方案是不要在旧文件中间添加新文件,但可能会被遗忘。
也许我可以删除旧频道并使用新 ID 再次添加它?
或者有没有办法让原始文件具有恒定的资源ID?