Android 发送带有附件的电子邮件-ICS和JB之间的更改?
我使用以下代码使用M4A发送带有多个附件的电子邮件(应该可以很容易地转移到Java):Android 发送带有附件的电子邮件-ICS和JB之间的更改?,android,xamarin.android,email-attachments,Android,Xamarin.android,Email Attachments,我使用以下代码使用M4A发送带有多个附件的电子邮件(应该可以很容易地转移到Java): Intent Intent=新的Intent(Intent.ActionSendMultiple); intent.SetType(“文本/普通”); intent.PutExtra(intent.extextext,“邮件正文”); intent.PutExtra(intent.ExtraSubject,“邮件主题”); DirectoryInfo di=newdirectoryinfo(Android.A
Intent Intent=新的Intent(Intent.ActionSendMultiple);
intent.SetType(“文本/普通”);
intent.PutExtra(intent.extextext,“邮件正文”);
intent.PutExtra(intent.ExtraSubject,“邮件主题”);
DirectoryInfo di=newdirectoryinfo(Android.App.Application.Context.FilesDir.AbsolutePath);
List fileList=新列表();
foreach(di.GetFiles(“MyAppLogFile*”)中的FileInfo文件)
{
Java.IO.File myFile=新的Java.IO.File(File.FullName);
var uri=Android.Net.uri.FromFile(myFile);
添加(uri);
}
如果(fileList.Count>0)
intent.PutParcelableArrayListExtra(intent.ExtraStream,fileList.ToArray());
StartActivity(Intent.CreateChooser(Intent,“发送电子邮件”);
这在ICS设备上运行良好,但在Jelly Bean上,邮件程序仍然显示附件,但它们没有被发送。由于文件来自应用程序文件系统的受保护部分,我怀疑ICS(在Galaxy S3上试用)和JB(在Galaxy S3和Galaxy Nexus上试用,后者运行JB 4.2)的权限系统可能发生了变化
是否有人成功地在JB上发送带有附件的电子邮件,其中要发送的文件位于应用程序目录或其子目录中
谢谢
Stephan您的目标和最低SDK版本是什么?顺便问一下,目标SDK版本:15,最低SDK版本:15。。。我从未发布过我的解决方案。看来Jelly Bean在强制文件访问方面更为严格。。。您写入应用程序标准目录的文件(/data/data/yourpackage/files)可以在ICS中很好地附加到邮件中(尽管从技术上讲,邮件客户端不允许访问应用程序的私有文件),而在JB上,这一点现在已得到强制执行。因此,我最终将打算邮寄的文件复制到一个可公开访问的目录中。如果你需要发送一些不想被分享的东西,那可能并不理想,但在我的情况下,这并不重要
Intent intent = new Intent(Intent.ActionSendMultiple);
intent.SetType("text/plain");
intent.PutExtra(Intent.ExtraText, "Mail body");
intent.PutExtra(Intent.ExtraSubject, "Mail subject");
DirectoryInfo di = new DirectoryInfo(Android.App.Application.Context.FilesDir.AbsolutePath);
List<Android.Net.Uri> fileList = new List<Android.Net.Uri>();
foreach (FileInfo file in di.GetFiles("MyAppLogFile*"))
{
Java.IO.File myFile = new Java.IO.File(file.FullName);
var uri = Android.Net.Uri.FromFile(myFile);
fileList.Add(uri);
}
if (fileList.Count > 0)
intent.PutParcelableArrayListExtra(Intent.ExtraStream, fileList.ToArray());
StartActivity(Intent.CreateChooser(intent, "Send email"));