Использование селектора:
Intent intent = new Intent();
intent.setType("audio/mp3");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, context.getResources().getString(R.string.select)), GET_URI);
Я получаю аудиофайл. Я беру этот Uri и сохраняю его в локальной базе данных для доступа позже. Я обнаружил, что для определенной выбранной песни содержимое URI вернуло бы нулевое значение, когда вы пытались создать MediaPlayer, используя его. Я попытался снова получить содержимое URI для той же песни, чтобы увидеть, что произойдет, и достаточно точно:
Старый, битый контент: content://media/external/audio/media/2478
Новый рабочий контент uri: content://media/external/audio/media/2487
Идентичное сохранение для последних двух цифр, которые меняются местами. Способ получения этого Ури не изменился между двумя моими попытками. Это известная проблема? Мой поиск в Google и SO не дал результатов. Но это проблема, если у контента есть привычка становиться дислексией, потому что нет никакого реального способа исправить проблему, кроме повторного получения содержания песни, которое должно быть сделано вручную, так как нет способа обратиться к файлу песни. путь с неверным содержанием uri.
Есть идеи?