将文件直接写入Android.OS.Environment.ExternalStorageDirectory可以吗?

时间:2018-05-18 21:21:50

标签: xamarin

我一直试图移植一些较旧的代码,然后找到一种方法,在将文件作为附件发送到电子邮件中之前将其写入文件。

该代码最终使用

var path = MediaStore.Images.Media.InsertImage(Forms.Context.ContentResolver, myBitmap, "My Bitmap", "MyBitmap.png");

保存文件。 path最终成为content://media/external/images/media/164,其中164似乎只是保存的第n件事。

最初这段代码不起作用(仅仅因为权限,原来是这样)所以我尝试用一​​些普通的C#代替它:

string dir = Android.OS.Environment.ExternalStorageDirectory.ToString();
string filePath = System.IO.Path.Combine(dir, fileName);
using (System.IO.Stream file = System.IO.File.Create(filePath))
{
    myStream.CopyTo(file);
}

它写的文件很好。该路径看起来像/storage/emulated/0/MyBitmap.png

现在奇怪的是我无法将第二条路径(/storage/emulated/0/MyBitmap.png)附加到电子邮件中,即使该文件存在,不是空的,代码具有读取权限,并且用户已经授予权限。但是第一条路径(content://media/external/images/media/164)没有问题,即使我不期望它:

enter image description here

你能告诉我这里发生了什么吗?我已经用Google搜索过,并认为我这样做是有效的。但是,不仅没有工作,而且有不同的做法,这没有任何意义,工作真的令人困惑。

0 个答案:

没有答案