如何在Xamarin Forms中打开默认的电子邮件应用程序收件箱

时间:2019-05-10 12:43:44

标签: xamarin.forms

我正在使用Xamarin Forms应用,正在尝试将默认邮件客户端直接打开到收件箱。

我可以使用XF Essentials打开并传递数据以撰写邮件

Email.ComposeAsync(message);

但是我希望该应用程序在按下按钮时打开默认邮件应用程序的收件箱。 Xamarin形式有可能吗?

1 个答案:

答案 0 :(得分:0)

我认为Dependency Service是您所需要的。 在您的Forms项目中创建一个界面:

public interface IOpenManager
{
    void openMail();
}

然后在iOS的每个平台上实现它:

[assembly: Dependency(typeof(OpenImplementation))]
namespace Demo.iOS
{
    public class OpenImplementation : IOpenManager
    {
        public void openMail()
        {
            NSUrl mailUrl = new NSUrl("message://");
            if (UIApplication.SharedApplication.CanOpenUrl(mailUrl))
            {
                UIApplication.SharedApplication.OpenUrl(mailUrl);
            }            
        }
    }
}

对于Android:

[assembly: Dependency(typeof(OpenImplementation))]
namespace Demo.Droid
{
    public class OpenImplementation : IOpenManager
    {
        public void openMail()
        {
            Intent intent = new Intent(Intent.ActionMain);
            intent.AddCategory(Intent.CategoryAppEmail);
            Android.App.Application.Context.StartActivity(intent);
        }
    }
}

最后,通过以下方式调用此依赖项:DependencyService.Get<IOpenManager>().openMail();