mailto:链接不打开在cordova应用程序Android上的邮件应用程序

这真让我抓狂。 我正在做一个离子应用程序(cordova,angular等)。 我有一个联系我们的链接,其中包含一个mailto:href

href="mailto:info@somedomain.net?subject=my%20App" 

我读过无数post,说你必须删除

 <access origin="*"/> 

从项目根目录下的config.xml中replace为:

 <access origin="mailto:*" launch-external="true" /> 

我已经做了 当我运行ionic build它被添加到platforms/android/res/xml的config.xml中。 但是无论我做什么,链接都不会在任何Android模拟器上打开邮件应用程序(即使在模拟器中configuration了电子邮件)。

可悲的是我没有一个设备来testing – 所以这只是一个模拟器的东西,或者我错过了什么?

Solutions Collecting From Web of "mailto:链接不打开在cordova应用程序Android上的邮件应用程序"

您必须安装cordova插件白名单 :

 cordova plugin add cordova-plugin-whitelist 

或者如果你想保存对你的config.xml文件的引用:

 cordova plugin add cordova-plugin-whitelist --save 

而且你必须把意图添加到你的config.xml文件中:

 <allow-intent href="mailto:*" /> 

你可以在这里find更多的信息。

如果你用“是”replace“true”,我会在我的应用程序中使用它,它可以工作。

 <access origin="tel:*" launch-external="yes"/> 

今天进入这个,并注意到一些影响mailto,但不是电话,链接:

除了像dave的回答所描述的那样将意图添加到cordova config中

<allow-intent href="mailto:*" />

我也必须允许mailto链接在我的页面的csp标题

<meta http-equiv="Content-Security-Policy" content="default-src 'self' mailto:*">

没有看到有关CSP头的这种行为的任何文档。

我刚刚解决这个感谢上面的答复和文章。 自上述贴文以来,我不确定有什么变化,但是供别人参考; 我现在有http://, https://, tel:, & mailto:只安装inappbrowser插件,不需要手动编辑config.xml。 我做了上面提到的所有东西,它仍然没有工作,所以我开始摆弄,发现我的window.open()调用需要第二个参数"_system"正常工作(它试图使用浏览器和“导航”到http://mailto:xxx...没有"_system"标志)。

然而,为了好奇,我卸载了白名单插件,并删除了config.xml中的手动编辑,它仍然有效。

笔记:

– 我不记得我尝试过的所有变化,但是onclick无法访问Ionic / Angular / Cordova作用域,所以我坚持使用ng-click。

– 我没有/没有尝试使用任何选项的href =“…”。 (如果我记得,我会testing它们并更新它来反映我的结果。)

因此, 安装了cordova-plugin-inappbrowser,并且不进行 config.xml编辑,下面是我的工作/testing解决scheme:

 ng-click="window.open('http://somesite.com', '_system')" ng-click="window.open('https://google.com', '_system')" ng-click="window.open('tel:(123) 345-4567')" ng-click="window.open('mailto:email@example.com', '_system')" 

已testing2016年9月20日使用:

HTC One M8,android 6,cordova v6.3.1,cordova-plugin-inappbrowser v1.5.0,ionic v2.0.0,jdk1.8.0_101,android SDK 21,23和24

config.xml改变Cordova的WhiteListPlugin不适用于我 – <access >, `。 我尝试了很多组合,包括上面的那些。 这并不意味着这些将无法正常工作,只是为了我的设置它不。 (build立浏览器,Android和iOS)

但是,使用cordovaInAppBrowser插件工作:

如上所述,使用inAppBrowser插件并将目标设置为_system。

这通过传递我在iOS中看到与unsupported url ,并启动本机系统的Web浏览器(即不依靠WhiteListPlugin允许URL调用)。

希望这可以帮助。

Cordova版本6.3.1。

尝试这个:

 window.location.href = "mailto:your@ema.il?subject=Works on iOS too";