Android: дислексик контента Uris.Один и тот же файл возвращает два отдельных идентификатора URI содержимого с помененными местами цифрами. - PullRequest
0 голосов
/ 25 января 2012

Использование селектора:

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.

Есть идеи?

1 Ответ

0 голосов
/ 25 января 2012

Некоторые из них дислексики!

Некоторые поля, предоставляемые поставщиками контента, кэшируются.И поэтому они не гарантированно будут свежими.Поскольку вы не указали средства, с помощью которых вы получили этот URI, я не могу сказать, является ли это кэшированным значением.

Вы можете посмотреть код и разобраться в нем самостоятельно.

http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/provider/MediaStore.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...