无法通过移动应用拨打电话或发送电子邮件

时间:2016-12-02 16:06:19

标签: android cordova

我在Windows 7环境中使用Cordova 6.4.0组装Android 6.1.0应用程序,并且应用程序中用于发送呼叫或电子邮件的链接无法正常工作。该应用程序构建在我的桌面上,链接可在Chrome中运行。我正在通过使用ADB 1.0.36将应用程序加载到我的Galaxy S7进行测试。

我安装了白名单和inappbrowser插件,并在我的config.xml中添加了,如下所示。为掩盖公司信息做了轻微修改。

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.test.app" version="3.0" android-versionCode="3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>AppName</name>
    <description>
        App Description
    </description>
    <author email="email@company.com" href="https://www.example.com">
        Author Name
    </author>
    <content src="index.html" />
    <access launch-external="yes" origin="tel:*" />
    <access launch-external="yes" origin="mailto:*" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="android-minSdkVersion" value="14"/>
    <platform name="android">
        <icon density="ldpi" src="assets/icons/android/ldpi.png" />
        <icon density="mdpi" src="assets/icons/android/mdpi.png" />
        <icon density="hdpi" src="assets/icons/android/hdpi.png" />
        <icon density="xhdpi" src="assets/icons/android/xhdpi.png" />
        <icon density="xxhdpi" src="assets/icons/android/xxhdpi.png" />
        <icon density="xxxhdpi" src="assets/icons/android/xxxhdpi.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <plugin name="cordova-plugin-whitelist" spec="~1.3.0" />
    <engine name="android" spec="~6.1.0" />
</widget>

这是一个无法正常工作的链接示例。

<div class="cuboxes">
    <h2>Group list</h2>
    <h3>( <span>800.555.5555</span> )</h3>
    <a href="tel:1-800-555-5555" class="cu green hidetablet">Call Us</a>
    <a href="mailto:mailto:person@example.com?Subject=Email From the App" class="cu green email">E-Mail Us</a>
</div>

我已尝试更改电话号码格式(删除&#34; - &#34;或在数字开头添加&#34; +&#34;)以及其他配置更改。这个应用程序是从头开始构建的,网页是从以前版本的应用程序添加的。旧版本没有构建,因为它不使用gradle。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

  

tel:phone_number
  调用输入的   电话号码。有效的电话号码   正如IETF RFC 3966中所定义的那样   公认。有效的例子包括   以下内容:

* tel:2125551212
* tel: (212) 555 1212

Android浏览器使用Phone应用程序来处理RFC 3966定义的“tel”方案 点击以下链接:

<a href="tel:2125551212">2125551212</a>
Android上的

将调出手机应用并预先输入2125551212的数字而无需自动拨号。

查看RFC3966

<强>更新

请参阅tel link android not working (Galaxy S5)

似乎你需要添加一个权限,你有这个设置吗?

你的config.xml中有

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

更新2

请参阅“tel”, “sms”, and “mailto” no longer working in Android after upgrading to cordova 3.6.3

 1. Add InAppBrowser plugin

**cordova plugin add org.apache.cordova.inappbrowser** 
  1. 在JS文件中创建自定义函数以在InApp浏览器中打开特殊链接

    var app = {
            initialize: function() {
            this.bindEvents();
        },         
        bindEvents: function() {
            document.addEventListener('deviceready', this.onDeviceReady, false);
        },         
        onDeviceReady: function() {
            app.receivedEvent('deviceready');
        },
        openNativeAppWindow: function(data) {
            window.open(data, '_system');
        }
    

    };

  2. 您正在调用特殊链接(如短信或电话)的地方 使用数据传递您的自定义网址,并让它打开本机浏览器 窗口反过来将推动本机App处理特殊 网址。

  3. 几个例子:

    <br><br><input type="button" onClick="app.openNativeAppWindow('http://google.com')" value="Open Google"/>
                <br><br><a onClick="app.openNativeAppWindow('geo://0,0?q=dallas')" data-rel="external">google maps</a>
                <br><br><a onClick="app.openNativeAppWindow('geo:0,0?q=Bacau')">Geolocation Test</a>
                <br><br><a onClick="app.openNativeAppWindow('geo:0,0?q=34.99,-106.61(Treasure)')">longitude & latitude with a string label</a>
                <br><br><a onClick="app.openNativeAppWindow('geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA')">street address Test</a>
                <br><br><a onClick="app.openNativeAppWindow('sms:2125551212')">SMS</a>
                <br><br><a onClick="app.openNativeAppWindow('mms:2125551212')">MMS</a>
                <br><br><a onClick="app.openNativeAppWindow('tel:2125551212')">Open Phone Dialer</a>
    

答案 1 :(得分:0)

试试这个: "tel://""mailto://"