How can I get MediaMetaData like Album, Track, Titel, Albumart, etc. from MediaStore in Android 10

此生再无相见时 提交于 2020-01-25 10:14:06

问题


I struggled for a long time to fetch album, track, duration, album art from audiofiles using Android 10 mediaStore.

What I did so far: Open an Intent an fetch the Audio-Folder:

    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);

Then onActivityResult:

mUri = data.getData();
childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(mUri,
            DocumentsContract.getTreeDocumentId(mUri));

Iterating through the cursor, I get the DocumentID from the audioFiles.

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);
}

Then I open another cursor on the mediaStore to query audio columns;

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 documentUri: content://com.android.providers.downloads.documents/tree/downloads/document/msf%3A23

Problem: My mediaCursor.getCount() = 0, so I can't fetch any results. Whats wrong in my code so that I wasn't able to get e.g. albumName from mediaStore.

Thanks GGK

来源:https://stackoverflow.com/questions/59779251/how-can-i-get-mediametadata-like-album-track-titel-albumart-etc-from-medias

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!