我有一个字符串文件名,它是Android设备外部存储上的图片文件夹的路径。我正在使用 opencv 字符串来保存图像。 然后我想发送一个共享 Intent 以与其他应用程序共享保存的图像。
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 :
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): Unable to get orientation of thumbnail /storage/emulated/0/Pictures/MyImages/Image1.jpg 10-07 10:19:47.265: E/Gmail(26264): java.io.FileNotFoundException: No content provider: /storage/emulated/0/Pictures/MyImages/Image1.jpg
为什么我可以使用文件路径字符串保存图像,但为什么不能共享保存的图像?路径是否不正确?如何获取保存图像的正确路径?
最佳答案
我试过了
File saveFile = new File(filename);
SavedImages.add(Uri.fromFile(saveFile));
而不是
Uri lastsavedUri=Uri.parse(new File(filename).toString())
SavedImages.add(lastsavedUri);
现在它可以工作了。我不明白为什么,但它有效。
关于Android:在外部存储上找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220103/