我使用此意图让用户选择照片:
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设备上抛出此异常。什么会导致此错误以及如何解决?
答案 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);