如何解决Android ContentResolver 正在从选择中返回具有不同 MIME 类型的文件
我希望能够使用 MediaPlayer 从 Android 10 Samsung A12 播放 mkv、flac 和 aac 文件。
我已经可以使用以下代码在 Android 9 Moto E6 上做到这一点。
val projection = arrayOf(
MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.IS_MUSIC,MediaStore.Audio.Media.ARTIST_ID,MediaStore.Audio.Media.TITLE)
val selection = MediaStore.Audio.Media.IS_MUSIC + " != ?"
val selectionArgs = arrayOf("0")
val sortOrder = MediaStore.Audio.Media.TITLE + " ASC"
context.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,projection,selection,selectionArgs,sortOrder).use { ... }
这在Android 10 Samsung A12上只返回mp3文件,所以我尝试了以下直接获取指定文件类型。
val contentResolver: ContentResolver = activityMain.contentResolver
val selection: String = DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?" +
" OR " + DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?" +
" OR " + DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?" +
" OR " + DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?"
val selectionArgs = arrayOf(
DocumentsContract.Document.MIME_TYPE_DIR,MimeTypeMap.getSingleton().getMimeTypeFromExtension ("mkv"),MimeTypeMap.getSingleton().getMimeTypeFromExtension ("flac"),MimeTypeMap.getSingleton().getMimeTypeFromExtension ("aac"),)
contentResolver.query(childrenUri,arrayOf<String?>(
DocumentsContract.Document.COLUMN_DOCUMENT_ID,DocumentsContract.Document.COLUMN_MIME_TYPE,),null).use { ... }
此代码仅返回带有音频/mpeg 的 MIME 类型。我评估了上述扩展名 mkv、flac 和 aac 的 mime 类型,但没有一个指定该 mime 类型。
我也试过
val projection = arrayOf(
MediaStore.Audio.Media._ID,MediaStore.Audio.Media.TITLE)
val selection = MediaStore.Audio.Media.IS_ALARM + " == ?" + " AND " +
MediaStore.Audio.Media.IS_NOTIFICATION + "== ?" + "AND " +
MediaStore.Audio.Media.IS_RINGTONE + "== ?"
val selectionArgs = arrayOf("0","0","0")
val sortOrder = MediaStore.Audio.Media.TITLE + " ASC"
context.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,sortOrder).use {
而且只有 mp3...
我认为通过文档合同的 mime 类型肯定会起作用,因为它根本不涉及媒体商店,所以我不确定接下来要尝试什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。