Android:外部存储上找不到文件

时间:2013-10-07 08:27:35

标签: android file path storage

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

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

在LogCat中,我得到了WRITEPATH:

  

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

然后我将filepath-string转换为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):无法获得方向   thumbnail /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

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

1 个答案:

答案 0 :(得分:5)

我试过

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

而不是

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

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