无法将文件复制到公共存储

时间:2015-04-17 11:13:35

标签: c# android android-intent xamarin

我正在尝试启动一个意图,以便打开图像文件,我从互联网上下载。

我可以将图像文件下载到应用程序的内部存储空间,但我无法将其复制到Android设备上的public / Documents目录中,以启动意图。

这是我复制文件的方式

var bytes = System.IO.File.ReadAllBytes (privatePath);
Java.IO.File docFolder = new Java.IO.File (global::Android.OS.Environment.ExternalStorageDirectory + "/MyAppCache");
if (!docFolder.Exists ()) docFolder.Mkdir ();

Java.IO.File file = new Java.IO.File (docFolder.AbsolutePath, "cache.jpg");
file.CreateNewFile();

Java.IO.FileOutputStream fOut = new Java.IO.FileOutputStream (file);
fOut.Write (bytes);
fOut.Close ();

return file.AbsolutePath;

我用于

的返回路径
global::Android.Net.Uri uri = global::Android.Net.Uri.Parse(FilePublisher.CopyToPublic());
StartActivity (new Intent (Intent.ActionView, uri));

我得到的结果是

No Activity found to handle Intent { act=android.intent.action.VIEW dat=/storage/emulated/0/MyAppCache/cache.jpg }

我检查了设备上的/ storage文件夹,其中甚至没有MyAppCache文件夹。

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

您在Intent中传递的URI不包含该方案。您可以从错误中看到:

No Activity found to handle Intent { act=android.intent.action.VIEW dat=/storage/emulated/0/MyAppCache/cache.jpg }

"dat="需要以file:///开头。