'getContentResolver ().openInputStream (uri)` создает исключение FileNotFoundException



Я использую это намерение, чтобы позволить пользователю выбрать фотографию:



Intent intent = new Intent(Intent.ACTION_PICK, 
MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, INTENT_SELECT_PHOTO);


И в onActivityResult:



Uri uri = data.getData();
InputStream inputStream = getContentResolver().openInputStream(uri);


Но он бросает FileNotFoundException на некоторых устройствах android.



Значение uri:



content://media/external/images/media/26467


Исключение, вызванное:



java.io.FileNotFoundException: No such file or directory


И очень странно, что он не выбросит это исключение на некоторых других устройствах android. Что вызовет эту ошибку и как ее исправить?

521   3  

3 ответов:

MediaStore.Images.Media.INTERNAL_CONTENT_URI 

Для изображений на локальном устройстве или

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

Для изображений на SD-карте.

Вы уверены, что правильно обращаетесь к обоим? Внутренняя / внешняя обработка варьируется в зависимости от устройства, возможно, поэтому она работает на одних, но не на других.

Я столкнулся с той же проблемой, но я решил ее с помощью метода setImageURI ImageView.

Вам не нужно использовать следующий код:

InputStream inputStream = getContentResolver().openInputStream(uri);

Просто используйте следующую функцию:

imageViewCustomer.setImageURI(data.getData());

Используйте Контекст.getContentResolver ().openInputStream (Uri);

Comments

    Ничего не найдено.