问题
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