Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

`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?

like image 588
Freewind Avatar asked Nov 25 '12 08:11

Freewind


1 Answers

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.

like image 71
Shakti Avatar answered Nov 18 '22 17:11

Shakti