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

时间:2012-11-25 08:47:39

标签: android image android-contentresolver

我使用此意图让用户选择照片:

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

但它会在某些Android设备上抛出FileNotFoundException

uri的价值:

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

引发的异常:

java.io.FileNotFoundException: No such file or directory

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

3 个答案:

答案 0 :(得分:2)

MediaStore.Images.Media.INTERNAL_CONTENT_URI 

用于本地设备上的图像或

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

用于SD卡上的图像。

您确定要正确解决这两个问题吗?内部/外部处理因设备而异,也许这就是为什么它在某些工作但不在其他工作上的原因。

答案 1 :(得分:1)

我遇到了同样的问题,但我通过使用ImageView的setImageURI方法解决了这个问题。

您不必使用以下代码:

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

只需使用以下功能:

imageViewCustomer.setImageURI(data.getData());

答案 2 :(得分:-2)

使用Context.getContentResolver()。openInputStream(Uri);