我自己也遇到了同样的问题,奇怪的是很难找出该用什么来代替。如果某些内容被弃用,他们至少应该包含一个关于如何操作的链接。 Spring 框架在这方面非常擅长,所以也许我被宠坏了。
Use MediaStore.Audio.AudioColumns._ID
然后你可以构建一个内容 URI,例如:
val mediaId = rs.getString(MediaStore.Audio.AudioColumns._ID)
val uri = Uri.parse(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.toString() + File.separator + mediaId)
我正在使用它MediaPlayer
,所以我使用了如下 URI:
mediaPlayer.setDataSource(context, uri)
希望这可以帮助其他想要了解最新情况并发现您的问题的人。
Source https://github.com/android/uamp/issues/325
还要扩展删除使用Mediastore.Audio.Media.DATA
,我发现我仍然可以像我使用的那样进行搜索MediaStore.Audio.Media.DATA
,通过搜索MediaStore.Audio.AudioColumns.DISPLAY_NAME
。虽然我更喜欢还包括相对路径。
Example:
val c: Cursor? = context.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null,
"${MediaStore.Audio.AudioColumns.RELATIVE_PATH} like ? AND ${MediaStore.Audio.AudioColumns.DISPLAY_NAME}=?",
arrayOf("Audiobooks/%", "some audio book.mp3"),
null
)
所以之前我在搜索/storage/emulated/0/AudioBook/%
,但现在使用相对路径AudioBook/%
结合DISPLAY_NAME
。所以它不像使用一个字段那么方便,而是使用两个字段。