2012-11-25 436 views
6

我用这个意图,让用户选择一张照片:`getContentResolver()openInputStream(URI)`抛出FileNotFoundException异常

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 android设备。

uri值:

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

引发的异常:

java.io.FileNotFoundException: No such file or directory 

,这是非常奇怪的是,它不会抛出一些其他Android设备此异常。什么会导致这个错误,以及如何解决它?

回答

2
MediaStore.Images.Media.INTERNAL_CONTENT_URI 

为在本地设备上的图像或

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

用于SD卡上的图像。

您确定您正确地解决了这两个问题吗?内部/外部治疗因设备而异,也许这就是为什么它在一些设备上工作,而不是在其他设备上工作。

+3

我刚刚发现,因为实际的图像被删除,但它们在照片查看器应用程序中有缓存。 – Freewind

+0

不知道,搜索问题,我遇到了一些解释相关问题的东西http://code.google.com/p/android/issues/detail?id=12508 – Shakti

+0

Right Freewind,我有这个确切的代码/错误浏览我的.txt文件的下载文件夹以及下载位置,两者的大小相同,但其中一个没有。谢谢! – tom

1

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

你不必使用下面的代码:

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

只需使用以下功能:

imageViewCustomer.setImageURI(data.getData()); 
-1

使用Context.getContentResolver()openInputStream(URI)。