使用依赖服务机器人Xamarin表格发送电子邮件 附件



我在尝试发送带有附件的电子邮件时遇到了这个错误。有帮助吗?谢谢你

****从活动上下文的外部调用startActivity()需要flag_activity_new_task标志。这真的是你想要的吗?****

这是我的代码:

[assembly: Dependency(typeof(sendEmail))]
namespace myapp.Droid
{
    public class sendEmail : IEmailTask
    {
        public sendEmail()
        {
        }
        public void SendEmail () 
        {
            var sqlliteFilname = "test.3gpp";
            string documentsPath = System.Environment.GetFolderPath(
            Environment.SpecialFolder.Personal);
            var stringPath = Path.Combine(documentsPath, sqlliteFilname);
            var path = Android.Net.Uri.FromFile(new 
           Java.IO.File(stringPath));
            Intent emailIntent = new Intent(Intent.ActionSend);
            // set the type to 'email'
            emailIntent.SetData(Android.Net.Uri.Parse("mailto:"));
            String[] to = { "youremail@mail.com" };
            emailIntent.PutExtra(Intent.ExtraEmail, to);
            // the attachment
            emailIntent.PutExtra(Intent.ExtraStream, path);
            // the mail subject
            emailIntent.PutExtra(Intent.ExtraSubject, "Subject");
           Android.App.Application.Context.StartActivity(Intent.CreateChooser(emailIntent, "Send email..."));

        }
    }
}

页面上的代码是:

 void btnSendingHandle_Clicked(object sender, System.EventArgs e)
        {
            var getEmail = DependencyService.Get<IEmailTask>();
            getEmail.SendEmail();
        }

就像尼克所说的

一样
  • 您可以使用Forms.Context开始活动。

  • 您可以在emailIntent.中添加emailIntent.SetFlags(ActivityFlags.NewTask);

在Android中,每个Activity都应具有自己的任务堆栈,您可以使用TaskAffition将其定义,该软件包的名称是默认值。但是,如果您使用Application.Context开始活动,则没有用于活动的任务堆栈,因此它建议您使用FLAG_ACTIVITY_NEW_TASK标志,此标志将为您的活动创建一个任务堆栈。

检查是否有附件要发送。*要替换为if block&amp;更改此

Intent emailIntent = new Intent(Intent.ActionSend);
//change it to 

Intent emailIntent = new Intent(Intent.ActionSendto);

android.app.application.context.startactivity(Intent.CreateChooser(电子邮件),"发送电子邮件..."));

if (emailIntent.ResolveActivity(Android.App.Application.Context.PackageManager) != null)
            {
                Android.App.Application.Context.StartActivity(emailIntent);
            }
            else
            {
                    string tag = "MY-EMAIL";
                    Log.Info(tag, "no attachment found");
            }

我的问题依赖于附件本身。

最新更新