导航

PhoneGap 插件开发

Posted on 2013-08-14 23:13  tnjin  阅读(376)  评论(0)    收藏  举报

phoneGap本身的功能即是通过插件来实现的,实际开发中也肯定会需要一些功能来由自己编写的插件来实现。

网上的例子大多是转载一个Toast例子,这是一个不需要回调的方法,所以我这里就不说这个例子。

插件开发步骤:

  1. JAVA类继承CordovaPlugin,并重写execute方法。
  2. 在res/xml/config.xml中添加插件引用
  3. 在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()

就可调用刚才的插件。