У меня проблема со стандартным комплектовщиком android. У меня есть следующий код, чтобы запросить медиастор с помощью URI из стандартного средства выбора (вызов с ACTION_GET_CONTENT):
private AudioRecord getAudioInfo(Uri uri) {
AudioRecord rec = new AudioRecord();
try {
if (DocumentsContract.isDocumentUri(this, uri)){
String[] data = {MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ALBUM};
String wholeID = DocumentsContract.getDocumentId(uri);
String id = wholeID.split(":")[1];
String sel = MediaStore.Images.Media._ID + "=?";
CursorLoader loader = new CursorLoader(getApplicationContext(),
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, data, sel, new String[]{ id }, null);
Cursor cursor = loader.loadInBackground();
cursor.moveToFirst();
rec.setData(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));
rec.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));
rec.setArtist(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));
rec.setAlbum(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)));
rec.setFilename("8D " + rec.getTitle() + ".mp3");
cursor.close();
return rec;
} else {
String[] data = {MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ALBUM};
CursorLoader loader = new CursorLoader(getApplicationContext(), uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
cursor.moveToFirst();
rec.setData(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));
rec.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));
rec.setArtist(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));
rec.setAlbum(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)));
rec.setFilename("8D " + rec.getTitle() + ".mp3");
cursor.close();
return rec;
}
}catch(Exception e){
e.printStackTrace();
return rec;
}
}
-
В средстве выбора у меня есть различные варианты выбора файла. Эти параметры показаны и пронумерованы на рисунке ниже:
![enter image description here](https://i.stack.imgur.com/w3wzs.jpg)
Вот выходные значения Uri для различных чисел:
(Musik:
содержание: // мультимедиа / внешние / аудио / медиа / 3301
(Загрузки):
content: //com.android.providers.downloads.documents/document/msf%3A3301
(VOG-L29):
содержимое: //com.android.externalstorage.documents/document/primary%3ADownload%2FJuice%20WRLD%20Unreleased%2FBag.mp3
(Dateien):
содержание: // media / external / audio / media / 3301
(Audio):
content: //com.android.providers.media.documents/document/audio%3A3301
Код работает для всех Uri, кроме номера 3. В этом Uri нет идентификатора, который я могу использовать для запроса медиастора.
Поэтому вопрос:
Как я могу использовать такой Uri, чтобы запросить медиастор для получения дополнительной информации о художнике и так далее?