12

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

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

但它会FileNotFoundException在一些安卓设备上抛出。

的价值uri

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

抛出的异常:

java.io.FileNotFoundException: No such file or directory

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

4

3 回答 3

3
MediaStore.Images.Media.INTERNAL_CONTENT_URI 

对于本地设备上的图像或

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

用于 SD 卡上的图像。

你确定你的地址都正确吗?内部/外部处理因设备而异,也许这就是为什么它对某些设备起作用而对其他设备不起作用的原因。

于 2012-11-25T08:57:14.563 回答
0

我面临同样的问题,但我通过使用 ImageView 的 setImageURI 方法解决了它。

您不必使用以下代码:

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

只需使用以下功能:

imageViewCustomer.setImageURI(data.getData());
于 2013-04-02T09:42:55.470 回答
-2

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

于 2014-07-15T07:10:50.453 回答