`getContentResolver().openInputStream(uri)`抛出FileNotFoundException

Fre*_*ind 9 android image android-contentresolver

我用这个意图让用户选择一张照片:

Intent intent = new Intent(Intent.ACTION_PICK, 
                           MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, INTENT_SELECT_PHOTO);
Run Code Online (Sandbox Code Playgroud)

并在onActivityResult:

Uri uri = data.getData();
InputStream inputStream = getContentResolver().openInputStream(uri);
Run Code Online (Sandbox Code Playgroud)

但它会引发FileNotFoundException一些Android设备.

价值uri:

content://media/external/images/media/26467
Run Code Online (Sandbox Code Playgroud)

引发的异常:

java.io.FileNotFoundException: No such file or directory
Run Code Online (Sandbox Code Playgroud)

并且非常奇怪的是它不会在其他一些Android设备上抛出此异常.什么会导致此错误以及如何解决?

Sha*_*kti 3

MediaStore.Images.Media.INTERNAL_CONTENT_URI 
Run Code Online (Sandbox Code Playgroud)

对于本地设备上的图像或

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 
Run Code Online (Sandbox Code Playgroud)

对于 SD 卡上的图像。

您确定您正确地解决了这两个问题吗?内部/外部治疗因设备而异,也许这就是为什么它对某些设备有效但对其他设备无效的原因。

  • 我刚刚发现,因为实际图像已被删除,但它们在照片查看器应用程序中具有缓存。 (3认同)