使用PhoneGap在Android上自动呼叫预定义号码

我正在使用PhoneGap和Jquery编写应用程序,在我的应用程序中我有一个应急按钮,onclick它应该自动调用预定义的数字。 我正在设法打开本机Android拨号程序,但我仍然需要用户再次点击发送按钮拨号。

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

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

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类的新类,并编写一个这样的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可以创建它。

  

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

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

应该这样做。

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

 cordova plugin add ../plugins/PhoneDialer 

它工作得很好,很容易实现!