首页 > 解决方案 > 如何在 Xamarin Forms 中打开默认电子邮件应用收件箱

问题描述

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

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

Email.ComposeAsync(message);

但我希望该应用程序在按下按钮时打开默认邮件应用程序的收件箱。这在 Xamarin Forms 中可行吗?

标签: xamarin.forms

解决方案


我认为依赖服务是你所需要的。在您的 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);
            }            
        }
    }
}

对于安卓:

[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();


推荐阅读