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

13

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

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

很奇怪的是,它在其他一些安卓设备上不会引发这个异常。是什么导致了这个错误,如何修复?
3个回答

3
MediaStore.Images.Media.INTERNAL_CONTENT_URI 

对于本地设备上的图片或

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

针对SD卡上的图像。

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


3
我发现实际的图片已被删除,但在照片查看应用程序中仍有缓存。 - Freewind
很好知道,当我在寻找问题时,我遇到了一个解释相关问题的东西:http://code.google.com/p/android/issues/detail?id=12508 - Shakti
没错 Freewind,我在浏览下载文件夹寻找一个 .txt 文件时遇到了这个代码/错误,而且有两个下载文件,大小都差不多,其中一个可以用,另一个不行。谢谢! - tom

0

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

您不必使用以下代码:

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

只需使用以下函数:

imageViewCustomer.setImageURI(data.getData());

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接