android - 如何从 Android 10 中的 MediaStore 获取 MediaMetaData,如专辑、曲目、标题、专辑封面等
问题描述
我为使用 Android 10 从音频文件中获取专辑、曲目、时长、专辑封面而苦苦挣扎了很长时间mediaStore
。
到目前为止我做了什么: 打开一个意图并获取音频文件夹:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(Intent.createChooser(intent, "Choose directory"), PICK_AUDIO_REQUEST);
然后onActivityResult:
mUri = data.getData();
childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(mUri,
DocumentsContract.getTreeDocumentId(mUri));
遍历光标,我从 audioFiles 中获取 DocumentID。
Cursor c = resolver.query(childrenUri, null, null, null, null);
while (c.moveToNext()) {
int idColumn = c.getColumnIndex(MediaStore.Audio.Media.DOCUMENT_ID);
String documentId = c.getString(idColumn);
}
mediaStore
然后我在查询音频列上打开另一个光标;
String selection = MediaStore.Audio.Media._ID + " like ?";
String[] selectionArgs = new String[]{documentId};
Uri mediaUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor mediaCursor = resolver.query(mediaUri,null,null,null,null);
while (mediaCursor.moveToNext()) {
int albumIndex = mediaCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
String album = mediaCursor.getString(albumIndex);
}
mediaUri:content://media/external/audio/media
文档Uri:content://com.android.providers.downloads.documents/tree/downloads/document/msf%3A23
问题:
我的 mediaCursor.getCount() = 0,所以我无法获取任何结果。我的代码有什么问题,以至于我无法从mediaStore
.
谢谢GGK
解决方案
推荐阅读
- java - 在每个列表项单击上设置自定义布局
- python - pyFMI 参数估计和优化
- git - 将 git/Bitbucket 存储库重新连接到原始本地驱动器
- multithreading - tbb 确定不正确的并发
- r - R 中各种成功概率的二项分布图
- laravel - Laravel 未定义偏移量:0 获取资源
- elasticsearch - 获取 Grok Debugger Kibana 的登录字段
- ios - 从另一个文件中的 SKScene 中删除 UIView
- internet-explorer - Microsoft Edge 在 IE 中打开 login.onmicrosoft.com 而不是访问页面
- elmah - 可以在 VSTS 版本中转换 ELMAH 主题吗?