我一直试图移植一些较旧的代码,然后找到一种方法,在将文件作为附件发送到电子邮件中之前将其写入文件。
该代码最终使用
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
)没有问题,即使我不期望它:
你能告诉我这里发生了什么吗?我已经用Google搜索过,并认为我这样做是有效的。但是,不仅没有工作,而且有不同的做法,这没有任何意义,工作真的令人困惑。