无法在Android中打开图像文件 - 找不到文件异常

时间:2011-07-26 10:44:26

标签: android filenotfoundexception

我的设备(Nexus s)中安装了this个应用程序。 如果您使用此应用程序,它会缓存一些图像。这就是它在我的设备库中显示缓存图像的原因。

我使用光标来获取路径

final String[] columns = { MediaStore.Images.Media.DATA };
Cursor imagecursor = managedQuery(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
        MediaStore.Images.Media._ID + " = " + id, null, MediaStore.Images.Media._ID);
if (imagecursor != null && imagecursor.getCount() > 0){
    imagecursor.moveToPosition(0);
    String path = imagecursor.getString(imagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
    Log.d("path", path);
    File f = new File("file://" + path);
    Log.d("check_file", "" + f.exists());
}

我得到了路径:

  

/mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast-food-new-1.png

下载的图片是: http://bigcity.learnenglishapps.com/images/cartoons/set2/fast-food-new-1.png

当我拉动文件或使用像Astro这样的文件管理器进行探索时,它就在那里。 但是,当我检查文件是否存在时,它会显示false

有任何角色问题吗?

更新

删除file://以检查文件是否存在。

接下来,我想在图库中打开该文件。

  1. 我应该用这条路径打开图片吗? 但那没效果:
  2.     Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setDataAndType(
                    Uri.parse("file:///mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast-food-new-1.png"),
                    "image/*");
        startActivityForResult(intent, 3);
    
    1. 或者我应该尝试从MediaStore获取content://样式路径?
    2. 更新2:

      解决使用:

      Uri.fromFile(f);
      

      而不是Uri.Parse()。因为它从编码格式构建/字符。

1 个答案:

答案 0 :(得分:2)

new File("file://" + path)更改为new File(path)