Phonegap tel:uri即使在白名单后也没有在android上工作

时间:2016-02-21 04:12:26

标签: android cordova jquery-mobile hybrid-mobile-app

在Android s6上使用phonegap桌面和phonegap开发者应用程序在手机上的html5 jquery移动混合phonegap应用程序。不确定手机间隙版本(cli安装不正确,尝试但打开提示错误)但是这是最近(上周)安装。

在Chrome中使用调用打开手机应用程序拨号程序但不在测试phonegap应用程序中 - 单击不执行任何操作。另外mailto:和http:行为相同,在Chrome中不适用于app。

确切的html是:

<a id="btn_phone" href="tel:18001231234" rel="external" data-role="button" data-icon="phone"></a>

我添加到config.xml 并根据评论删除了全能 这让它为别人工作,但不是我的情况。

在配置文件中是这样的:

<access origin="tel:*" launch-external="yes"/>
<access origin="geo:*" launch-external="yes"/>
<access origin="mailto:*" launch-external="yes"/>
<access origin="sms:*" launch-external="yes"/>
<plugin name="cordova-plugin-whitelist" version="1"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-intent href="tel:*"/>
<allow-intent href="sms:*"/>
<allow-intent href="mailto:*"/>
<allow-intent href="geo:*"/>

如上所述我删除了这个:

<access origin="*"/>

因此,基于我所阅读的所有内容,应该是我需要做的所有内容,但它仍然无效。

两个问题:

  1. 有没有人知道这方面的解决方法?

  2. 有没有办法在手机上调试这个以查看失败的原因?

  3. 感谢

2 个答案:

答案 0 :(得分:4)

我一直在努力奋斗,并最终做了以下工作:

在HTML中:

<input type="button" href="tel:+1-800-555-1234“ class="phone-number" value="1-800-555-1234"/>

在Javascript中:

$(‘.phone-number’).bind(click, function(e) {
    e.preventDefault()
    var phoneLink = $(e.currentTarget).attr('href');
    window.open(phoneLink, '_system', 'location=yes’);
}

答案 1 :(得分:0)

你的cordova版本是什么?我认为你的问题是白名单插件声明。

试试这个:

<feature name="Whitelist">
    <param name="android-package" value="YOUR_WHITELIST_CORDOVA_PATH" />
    <param name="onload" value="true" />
</feature>

有关如何在此配置白名单的更多信息: https://www.npmjs.com/package/cordova-plugin-whitelist

全部注意此答案不适用于CLI。此上下文中的<feature>适用于SDK和使用IDE的用户。请参阅文档The feature Element
引用:

  

如果使用CLI构建应用程序,则使用plugin命令启用设备API。这不会修改顶级config.xml文件,因此<feature>元素不适用于您的工作流程。

     

如果您直接在SDK中工作并使用特定于平台的config.xml文件作为源,则可以使用<feature>标记来启用设备级API和外部插件。它们通常在特定于平台的config.xml文件中显示自定义值。