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

标签 android file path storage

我有一个字符串文件名,它是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/

相关文章:

android - 在 Android Studio 0.8.2 中找不到 `uses-sdk`

file - Pentaho 水壶转换 - 跳过 csv 文件中的第一行

python - vscode找不到python的requests库

batch-file - 使用通配符路径搜索文件

java.lang.LinkageError : Package versions: jackson-core=2. 13.3、 jackson -databind=2.13.3、 jackson -dataformat-xml=2.13.3、 jackson -datatype-jsr310=2.13.3

android - 应用程序死机时的地理围栏

c - 如何在 unix 中创建阻塞文件描述符?

eclipse - goclipse 错误 "resource doesn' t 有对应的 go 包”

android - getRelativeDateTimeString 与星期几?

emacs - Emacs 是否两次加载我的文件(.el 和 .elc)?