xamarin.forms - 如何在 Xamarin Forms 中打开默认电子邮件应用收件箱
问题描述
我正在开发 Xamarin Forms 应用程序,并尝试将默认邮件客户端直接打开到收件箱。
我可以使用 XF Essentials 打开并传递数据以撰写消息
Email.ComposeAsync(message);
但我希望该应用程序在按下按钮时打开默认邮件应用程序的收件箱。这在 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();
推荐阅读
- python-3.x - 为什么 npy 的大小比 csv 大?
- haskell - 尝试使用未加载的模块'main:Prelude'(.\Prelude.hs)时出现runhaskell错误
- express - NuxtJs serverMiddleware 导致生产错误
- c++ - 括号运算符在 C++ 中的作用是什么
- javascript - window.location.href 不提交表单
- generics - 我该如何处理这个“这不是被覆盖的子类型”错误
- javascript - selenium-webdriver 未使用 npm 安装在 ubuntu 中
- javascript - 如何使用 ajax 将带有图像文件的表单数据上传到 django 模型
- java - 为什么我在扩展类时会收到 ClassCastException?
- python - 无法从另一个脚本调用 py 脚本