С KitKat изменил идентификаторы URI из сборщиков в подобныхНовые KitKat URIs не отвечают на Intent.ACTION_VIEW
content://com.android.providers.media.documents/document/image:3951
тогда ни один из моих ACTION_VIEW намерений работать больше. Когда, например, пользователь выбирает изображение, я использую
public static void openImage(Fragment f, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "image/*");
f.startActivity(intent);
}
и Android Галерея Google+ Фото и придумать, но при выборе, галерея просто показывает пустой экран, фотографии говорят «среда не найдена»
В То же самое со звуками, я привык использовать
public static void playSound(Fragment f, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "audio/*");
f.startActivity(intent);
}
Который используется, чтобы показать Google Play Music в предыдущих версиях, с небольшим количеством белого играя диалогового интерфейса. С новыми URI я получаю исключение, что ни одно приложение не может справиться с этим намерением.
// С фотографиями смешно, что при выборе «Галерея» вместо «Картинки» в новом пользовательском интерфейсе KK, он возвращает старые URI, которые работают.
Любые идеи? Являются ли системные приложения просто не готовыми к новому урису? Должен ли я каким-то образом взломать новый уристать старым, чтобы они работали? Или я чего-то не хватает?
Спасибо!
Google изменил это из-за нового StorageProvider. Я думаю, вы можете посмотреть здесь: http://s.stefma.ws/62ad44 – StefMa
Хорошо, ладно, я понимаю, почему они это сделали. Но пока они нарушили намерение ACTION_VIEW. Все, что я вижу, заключается в том, как импортировать через inputStream или parcelFileDescriptor, которые я не хочу использовать в моем случае использования. Я просто хочу хранить uris в своей базе данных и просматривать их во время работы во внешних приложениях. – urSus
Похоже, что принимающие приложения не обрабатывают uri правильно в этом случае, например. они пытаются разобрать их, а не 'openInputStream()' на них. – botteaap