'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. Что вызовет эту ошибку и как ее исправить?

3 7

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);