【问题标题】:Phonegap tel: uri not working on android even after whitelistingPhonegap tel:即使在白名单之后,uri 也无法在 android 上运行
【发布时间】:2016-02-21 04:12:26
【问题描述】:

在 android s6 Sport 上使用 phonegap 桌面和手机上的 phonegap 开发人员应用程序的 html5 jquery 移动混合 phonegap 应用程序。不确定电话差距版本(cli 未正确安装,已尝试但打开提示出错),但它是最近(上周)安装的。

在 chrome 中使用 call 会打开电话应用程序拨号器,但不会在测试 phonegap 应用程序中 - 单击什么也不做。也 mailto: 和 http: 行为相同,在 chrome 中而不是在应用程序中工作。

确切的 html 是:

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

我添加到 config.xml 并基于 cmets 删除了包罗万象的 这使它适用于其他人,但不适用于我的情况。

在配置文件中是这样的:

<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. 有没有办法在手机上调试它以查看失败的原因?

谢谢

【问题讨论】:

  • @kpg 请在您的帖子中回答以下问题。因为这似乎是你关于这个主题的第一篇文章。这是您的第一个混合应用程序吗?您在使用桌面应用程序吗?您的目标平台及其目标版本是什么:Android 4、5、6? iOS 7、8、9?你在什么平台上开发?视窗,MacOS?你在用模拟器吗?一旦您在帖子中回答了问题,请在 cmets 中回复,以便我知道您已在帖子中添加信息。
  • @kpg 你的问题解决了吗?
  • 很晚的后续行动 - 抱歉。我从来没有让这个工作,最终放弃了 phonegap,因为对于我想要创建的简单应用程序来说学习曲线太陡峭了 - 改用 Telerik 平台(不是免费的)。

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


【解决方案1】:

我一直在为此苦苦挣扎,最终做了以下工作:

在 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’);
}

【讨论】:

    【解决方案2】:

    你的科尔多瓦版本是什么?我认为您的问题是白名单插件声明。

    试试这个:

    <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。 &lt;feature&gt; 在此上下文中适用于 SDK 和使用 IDE 的用户。请参阅文档The feature Element
    引用:

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

    如果您直接在 SDK 中工作并使用特定于平台的 config.xml 文件作为源,则可以使用 &lt;feature&gt; 标记来启用设备级 API 和外部插件。它们通常与特定平台的 config.xml 文件中的自定义值一起出现。

    【讨论】:

    • 科尔多瓦 6.0 版。我看到 4.0 及更高版本需要白名单插件,我安装了它但仍然无法正常工作,但我现在看到这就是问题所在。我只需要正确安装插件并正确设置confing.xml。我会做更多的研究。 CLI 无法正常工作,所以我想我会重新安装。
    猜你喜欢
    • 1970-01-01
    • 2018-02-12
    • 2018-10-03
    • 2020-11-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多