【问题标题】:Renaming and deleting a music playlist in Android 10+在 Android 10+ 中重命名和删除音乐播放列表
【发布时间】: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


    【解决方案1】:

    对于 Q 及以上使用 uri fromMediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),对于以下 Q 使用 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI

    这是因为最近的范围存储更改

    【讨论】:

    • 使用 MediaStore.VOLUME_EXTERNAL_PRIMARY 并不能解决问题
    猜你喜欢
    • 1970-01-01
    • 2014-04-13
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多