mailto:链接无法在cordova应用程序中在Android上打开邮件应用程序

时间:2015-05-20 16:36:50

标签: android cordova ionic-framework ionic

这让我发疯了。我正在使用Ionic应用程序(Cordova,Angular等)。我有一个联系我们链接,其中包含mailto:href

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

我已经阅读过无数帖子,说你必须删除

<access origin="*"/>

从项目根目录中的config.xml中替换为:

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

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

可悲的是,我没有设备可以测试 - 所以这只是模拟器的事情还是我错过了什么?

7 个答案:

答案 0 :(得分:25)

您必须安装cordova plugin whitelist

cordova plugin add cordova-plugin-whitelist

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

cordova plugin add cordova-plugin-whitelist --save

并且您必须将意图添加到 config.xml 文件中:

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

您可以找到更多信息here

答案 1 :(得分:5)

我刚刚解决了这个问题,感谢他们的回应和上面的文章。我不确定自上述帖子以来有什么变化或没有变化,但供其他人参考;我现在http://, https://, tel:, & mailto:只安装了inappbrowser插件,并且不需要手动编辑config.xml。我做了上面提到的一切&amp;它仍然无法正常工作,所以我开始摆弄并发现我window.open()调用要求"_system"的第二个参数正常工作(它尝试使用浏览器和&#34;导航& #34;没有http://mailto:xxx...标志的"_system"

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

注意:

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

- 我没有/没有尝试过使用href =&#34; ...&#34;有任何选项。 (如果我记得,我会测试它们并更新它以反映我的结果。)

因此,仅使用 安装cordova-plugin-inappbrowser并编辑 no config.xml,以下是我的工作/测试解决方案:

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')"

2013年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 SDKs 21,23,&amp; 24安装

答案 2 :(得分:3)

如果用“是”替换“true”怎么办...我在我的应用程序中使用它并且它可以工作。

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

答案 3 :(得分:3)

今天进入这个并且注意到影响mailto的东西,但没有tel,链接:

除了如dave的回答所描述的那样将意图添加到cordova配置

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

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

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

没有看到有关此CSP标头行为的任何文档。

答案 4 :(得分:3)

试试这个:

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

答案 5 :(得分:0)

config.xml中更改Cordova's WhiteListPlugin对我不起作用 - <access >,`。我尝试了很多组合,包括上面那些组合。并不意味着这些不会起作用,只是为了我的设置它不会。 (适用于浏览器,Android和iOS的构建)

但是,使用Cordova InAppBrowser Plugin工作:

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

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

希望这有帮助。

Cordova版本6.3.1。

答案 6 :(得分:0)

除了使用Cordova's WhiteListPlugin;

之外

以这种方式对我有用: 在config.xml中

<access origin="*"/>
<access origin="mailto:*" launch-external="true" />
<allow-intent href="mailto:*" launch-external="yes"/>

特别为ios添加:

<platform name="ios">
    <allow-navigation href="mailto:*" launch-external="yes"/>    
    ...
 <platform name="ios">