【问题标题】:Android: File not found on external storageAndroid:在外部存储上找不到文件
【发布时间】:2013-10-13 17:55:33
【问题描述】:

我有一个字符串 filename,它是 android 设备外部存储上图片文件夹的路径。我正在使用字符串通过opencv保存图像。 然后我想发送一个分享意图来与其他应用分享保存的图像。

Highgui.imwrite(filename, Image);
Log.d("WRITEPATH", filename);

在 LogCat 中,我得到了 WRITEPATH:

/storage/emulated/0/Pictures/MyImages/Image1.jpg

然后我将文件路径字符串转换为 uri:

Uri lastsavedUri=Uri.parse(new File(filename).toString())

并发送我的分享意图:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, SavedImages);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to.."));

SavedImages 是一个包含多个 lastsavedUri

的 ArrayList

很遗憾,没有应用程序可以找到我要分享的图像。例如,点击发送邮件后 Gmail 崩溃,我收到 logcat 错误

10-07 10:19:47.265: E/Gmail(26264): 无法获取方向 缩略图 /storage/emulated/0/Pictures/MyImages/Image1.jpg 10-07 10:19:47.265:E/Gmail(26264):java.io.FileNotFoundException:否 内容提供者:/storage/emulated/0/Pictures/MyImages/Image1.jpg

为什么我可以使用文件路径字符串保存我的图像,但为什么我不能共享保存的图像?路径是否不正确?如何获得保存图像的正确路径?

【问题讨论】:

  • Highgui.imwrite 是否关闭文件句柄?
  • 您的意图额外流中的SavedImages 是什么?
  • 我不确定 Highgui.imwrite 是否会关闭文件句柄。我在 opencv 网站上找不到信息。是否可以使用android工具关闭文件句柄?
  • SavedImages 是一个包含多个 lastsavedUri 的 ArrayList。 ArrayList<Uri>SavedImages = new ArrayList<Uri>(); 然后 SavedImages.add(lastsavedUri); 在 for 循环中
  • 我不知道这是否有帮助,但我检查了保存的文件是否存在以及文件是否可读。两者的结果都是正确的。但是当我使用file.canExecutable() 时,我得到了错误,并且通过执行file.setExecuteable(true,false) 也得到了错误。我不知道这是否会导致我的问题。

标签: android file path storage


【解决方案1】:

我试过了

File saveFile = new File(filename);
SavedImages.add(Uri.fromFile(saveFile));

而不是

Uri lastsavedUri=Uri.parse(new File(filename).toString())
SavedImages.add(lastsavedUri);

现在它正在工作。我不明白为什么,但它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多