phonegap添加插件(android)
qt也开始支持android与ios,遗憾的是qwebkit不能在android于ios上使用,希望5.3能加入。为了能够实现跨移动平台,选择phonegap进行开发。phonegap的安装大家可以参照官网www.phonegap.com。目前最新版本为2.91,本人用的是2.90版。在这里简单简述下如何在phonegap下添加插件,使用js调用本地函数。
详细步骤可以参考官网:
http://docs.phonegap.com/zh/3.4.0/guide_platforms_android_plugin.md.html#Android%20%E5%A4%96%E6%8E%9B%E7%A8%8B%E5%BC%8F
如果你像我一样使用2.90的话官网的文档(3.4.0)是无法使用的,问题出在JS调用说明部分(其余部分可以参考官网),官方的文档例子为
cordova.exec(function(winParam) {}, function(error) {}, "service", "action", ["firstArgument", "secondArgument", 42, false]);
如果按照官方的做法将会报错TypeError: Result of expression ‘cordova.exec‘ [undefined] is not a function 找不到这个方法,在网上搜了一圈都是调用cordova.exec()。没办法,只能是去看下源码,既然是cordova,就找cordova.js这个文件,果然在这个文件里cordova这个类没有exec方法。不过在程序里有一句
var exec = require(‘cordova/exec‘);
而cordova类里又有require。所以硬着头皮在要调用的js文件下使用下面的方式调用。结果这样代码是可以正常运行的,不过正确的方式是不是这样,这就不确定了,官方在文档这方面的更新还是不够快啊。
var exec = cordova.require("cordova/exec"); exec(callbackok,callbackerr,"AndroidAPIforJS", "test1", ["test"]);
接下来就说下我具体的实现步骤。
第一步实现android插件程序
public class AndroidAPIforJS extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("test")) { Log.e("plugintest","ok"); callbackContext.success(); return true; } else { Log.e("plugintest","error"); callbackContext.error(0); return false; } } }
第二步在config.xml中添加
<feature name="AndroidAPIforJS"> <param name="android-package" value="com.myexample.phonegap.AndroidAPIforJS"/> </feature>
第三部编写js代码
function callbackok() {
alert("ok!"); } function callbackerr() { alert("error!"); } var exec = cordova.require("cordova/exec"); exec(callbackok,callbackerr,"AndroidAPIforJS", "test", ["test"]);
这里简单说明下exec的参数
callbackok:当调用插件成功时,且java程序执行callbackContext.success();被触发。
callbackerr:当调用插件失败时,且java程序执行callbackContext.error(0);被触发。
"AndroidAPIforJS":为插件类名。
"test":用于区分插件类调用方法。
["test"]:用于传参。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。