Я не могу понять, как запросить данные о файле (который был выбран пользователем) из MediaStore .
1) Я открываю средство выбора файлов следующим образом
public static void launchPicker(Fragment f) {
Intent pickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
pickerIntent.setType("audio/mpeg");
pickerIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
pickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
f.startActivityForResult(pickerIntent, REQUEST_CODE);
}
2) получить данные из намерения
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
//multiselection only
ClipData clipData = data.getClipData();
if (clipData != null) {
List<Uri> results = new ArrayList<>();
for(int i = 0; i < clipData.getItemCount(); i++) {
Uri uri = clipData.getItemAt(i).getUri();
if (uri != null) {
results.add(uri);
}
}
//TODO process result
}
}
}
3) Теперь у меня есть список DocumentUris. Каким должен быть мой следующий шаг?
MediaSoter может конвертировать mediaUri в documentUri через Mediastore.getDocumentUri () , но я не смог найти способ конвертировать documentUri в mediaUri.
Я хотел бы получить эти поля из MediaStore: MediaStore.Audio.Media._ID , ALBUM_ID , ARTIST_ID .