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

如何通过应用直接拨打电话?

最佳答案

您需要write a plugin才能使用此功能。您需要做的第一件事是添加:

android.permission.CALL_PRIVILEGED


到您的AndroidManifest.xml。这将允许您跳过Dialer应用程序拨打号码。插件接口需要一点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代码来拨打电话。您需要创建一个扩展插件类的新类,并编写如下的execute方法:

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");
}


那应该做。

09-20 12:52