我在运行Android Oreo的设备上遇到了关于NotificationChannel声音的奇怪问题。
假设我在项目的raw目录中有两个声音文件:
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?