2

我正在使用 PhoneGap 和 Jquery 编写一个应用程序,在我的应用程序中我有一个紧急按钮,点击它应该会自动呼叫一个预定义的号码。我正在设法打开本机 android 拨号器,但我仍然需要用户再次单击发送按钮进行拨号。

如何从应用程序直接拨打电话?

4

2 回答 2

2

您需要为此功能编写一个插件。您需要做的第一件事是添加:

android.permission.CALL_PRIVILEGED

到您的 AndroidManifest.xml。这将允许您拨打一个跳过拨号器应用程序的号码。插件接口需要一小段 JavaScript 代码:

cordova.define("cordova/plugin/emergencydialer", 
  function(require, exports, module) {
    var exec = require("cordova/exec");
    var EmergencyDialer = function () {};

    var EmergencyDialerError = function(code, message) {
        this.code = code || null;
        this.message = message || '';
    };

    EmergencyDialer.CALL_FAILED = 0;

    EmergencyDialer.prototype.call = function(telephoneNumber,success,fail) {
        exec(success,fail,"EmergencyDialer", "call",[telephoneNumber]);
    };

    var emergencyDialer = new EmergencyDialer();
    module.exports = emergencyDialer;
});

然后,您需要编写一些 Java 代码来拨打电话。您需要创建一个扩展 Plugin 类的新类并编写如下执行方法:

public PluginResult execute(String action, JSONArray args, String callbackId) {
    PluginResult.Status status = PluginResult.Status.OK;
    String result = "";

    try {
        if (action.equals("call")) {
            String number = "tel:" + args.getString(0);
            Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number)); 
            this.cordova.getActivity().startActivity(callIntent);
        }
        else {
            status = PluginResult.Status.INVALID_ACTION;
        }
        return new PluginResult(status, result);
    } catch (JSONException e) {
        return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
    }
}

无论您如何调用此类,您都需要在 res/xml/config.xml 文件中添加一行,以便 PluginManager 可以创建它。

<plugin name="EmergencyDialer" value="org.apache.cordova.plugins.EmergencyDialer"/>

最后在您的 JavaScript 代码中,您需要创建他们的插件并像这样调用它:

function panicButton() {
    var emergencyDialer = cordova.require("cordova/plugin/emergencydialer");
    emergencyDialer.call("18005551212");
}

那应该差不多了。

于 2012-11-05T14:50:44.227 回答
0

这个线程有点老,但似乎谷歌很受欢迎,所以我想补充一点,现在在https://github.com/anemitoff/PhoneGap-PhoneDialer有一个插件可以完成这项工作。该页面底部用于安装本地插件的语法似乎与我习惯的有点不同,但它与推荐的用于安装本地插件的科尔多瓦语法配合得很好。如果您不熟悉,您可以在http://docs.phonegap.com/en/4.0.0/guide_cli_index.md.html阅读有关从各种来源安装插件的信息,我们只是做了类似的事情

cordova plugin add ../plugins/PhoneDialer

它工作得很好并且很容易实现!

于 2015-04-03T21:10:51.657 回答