Search code examples
androidimageandroid-contentresolver

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


Solution

  • 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.