【发布时间】:2021-08-28 00:17:34
【问题描述】:
我正在尝试更新我的旧音乐播放器以支持 Android 10 和 11(以及即将推出的 12)
我猜我重命名和删除播放列表的代码由于安全性变化而损坏了??这是过去的工作:
private fun renamePlaylist(resolver: ContentResolver, playlist: Playlist, newName: String) {
val uri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI
val selection = "${MediaStore.Audio.Playlists._ID}=${playlist.id}"
val c = ContentValues()
c.put(MediaStore.Audio.Playlists.NAME, newName)
resolver.update(uri, c, selection, null)
}
和
fun deletePlaylist(resolver: ContentResolver, id: Long) {
val uri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI
val selection = "${MediaStore.Audio.Playlists._ID}=$id"
resolver.delete(uri, selection, null)
}
我在 Android 9 设备上再次进行了测试,它运行良好。现在我有这个错误
java.lang.IllegalArgumentException:不允许移动不属于明确定义的集合的内容://media/external/audio/playlists
在挖掘 Android 源代码后,我的 URI 似乎是 AUDIO_PLAYLISTS 类型,并且它需要 AUDIO_PLAYLISTS_ID 类型。所以我试图作弊并将播放列表 id 附加到 URI 以匹配预期的类型。现在它没有崩溃,但播放列表也没有被删除,没有任何反应
感谢您的帮助
【问题讨论】:
标签: android android-mediaplayer