Freewind
Freewind

Reputation: 198228

`getContentResolver().openInputStream(uri)` throws FileNotFoundException

I use this intent to let user select a photo:

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

And in onActivityResult:

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

But it throws FileNotFoundException on some android devices.

The value of uri:

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

The exception thrown:

java.io.FileNotFoundException: No such file or directory

And it's very strange that it won't throw this exception on some other android devices. What will cause this error and how to fix it?

Upvotes: 15

Views: 23994

Answers (3)

Archie
Archie

Reputation: 11

Use Context.getContentResolver().openInputStream(Uri);

Upvotes: -2

Sfaruq681
Sfaruq681

Reputation: 121

I face the same problem but I resolved it by using the setImageURI method of the ImageView.

You dont have to use the following code:

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

Simply use the following function:

imageViewCustomer.setImageURI(data.getData());

Upvotes: 0

Shakti
Shakti

Reputation: 1581

MediaStore.Images.Media.INTERNAL_CONTENT_URI 

for images on the local device or

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

for images on the SD card.

Are you sure you are addressing both correctly? The internal/external treatment varies with device, maybe that is why its working on some but not on others.

Upvotes: 3

Related Questions