Я долго пытался получить альбом, трек, длительность, обложку альбома из аудиофайлов, используя 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));
Перебирая курсор, я получаю DocumentID из 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);
}
Затем я открываю еще один курсор на 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
documentUri: content://com.android.providers.downloads.documents/tree/downloads/document/msf%3A23
Проблема: Мой mediaCursor.getCount () = 0, поэтому я не могу получить никаких результатов. Что не так в моем коде, так что я не смог получить, например, albumName от mediaStore
.
Спасибо GGK