phoneGap本身的功能即是通过插件来实现的,实际开发中也肯定会需要一些功能来由自己编写的插件来实现。
网上的例子大多是转载一个Toast例子,这是一个不需要回调的方法,所以我这里就不说这个例子。
插件开发步骤:
- JAVA类继承CordovaPlugin,并重写execute方法。
- 在res/xml/config.xml中添加插件引用
- 在js中引用
JAVA类继承CordovaPlugin
public class Test extends CordovaPlugin { @Override Public boolean execute(String action,JSONArray json,CallbackContext callbackContext){}
|
action 是从js端传递来的参数,插件可以根据需要,判断这个参数,以区别执行不同的方法。
json是js端传递的参数,可以做函数处理的数据,callbackContext即回调的上下文。
在res/xml/config.xml中添加插件引用
<plugin name="Test" value="test.plugin.Test"/>
|
在js中引用
js中最终的引用形式为
cordova.exec(plugsuccess,plugFail,"Test","test",[])
|
cordova.exec()方法执行需要5个参数,分别是:
执行成功后的回调函数,不需要的话可以是null;
执行失败后的回调函数,不需要的话可以是null;
插件名(服务名),即在config.xml文件中配置的name;
action名,对应插件在插件中可以根据这个从而进行区别执行多个方法——这有点像servlet中根据Request的URI来执行不同的方法——当然你非拿它用来做参数也没人管你;
参数数组,可以为空,即[],这里直接放置参数值就好,貌似也可以放json形式的object,对应插件里execute方法的JSONArray;
可以根据需要封装成js的对象,从而更方便引用
var test = function(){}; test.prototype = { test:function(content,length){ return cordova.exec(null, null,"Test","test",[]); } }; cordova.addConstructor(function(){ if (!window.plugins) { window.plugins = {}; } window.plugins.TestPlugin = new test();
}
这样只需要在js中使用
window.plugins.TestPlugin.test()
就可调用刚才的插件。
浙公网安备 33010602011771号