Android 发送带有附件的电子邮件-ICS和JB之间的更改?

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

我使用以下代码使用M4A发送带有多个附件的电子邮件(应该可以很容易地转移到Java):

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"));