转 PhoneGap通过Plugin Js调用Java并互相传参

PhoneGap通过Plugin Js调用Java并互相传参

1.Java代码

一个继承自Plugin的类,并实现execute方法。

复制代码
public class test01 extends Plugin{      public static final String ACTION = "test";          @Override     public PluginResult execute(String action, JSONArray data, String callbackId) {         // TODO Auto-generated method stub         PluginResult result = null;           JSONObject jsonObj = new JSONObject();//可以返回给JS的JSON数据         if(ACTION.equals(action)){             try {                 String testData1 = data.getString(0);//JS中传来的JSON格式的数据                 String testData2 = data.getString(1);                                  Log.e("test!!!", "This is testData1 " + testData1);                 Log.e("test!!!", "This is testData2 " + testData2);                                  jsonObj.put("testData1", testData1 + " after Plugin");                 jsonObj.put("testData2", testData2 + " after Plugin");                                  result = new PluginResult(PluginResult.Status.OK, jsonObj);                 //返回成功时,将Java代码处理过的JSON数据返回给JS             } catch (Exception e) {                 // TODO Auto-generated catch block                                e.printStackTrace();             }                        }                           return result;     }  }
复制代码

 

2.在xml中注册

在\res\xml\plugins.xml文件中,加入

<plugin name="test01" value="包名.test01"/>

name指的是他的别名(貌似必须与类名相同),value是他真正的类名

 

3.在js中注册此插件

在cordova-1.7.0.js加入如下函数

复制代码
var testAndroid01API=function(){};     testAndroid01API.prototype.test = function(success, error, testData1, testData2){     return PhoneGap.exec( success, error,                  'test01', //java类名,plugins.xml中注册的名字                 'test',    //action,Java方法中用来匹配的字段                 [testData1, testData2]    //params 传递的参数,Array形式     ); }; PhoneGap.addConstructor(function() { PhoneGap.addPlugin('testAndroid01API', new testAndroid01API()); });
复制代码

 

4.在js中调用

复制代码

<script type="text/javascript" src="cordova-1.7.0.js"></script> <script type="text/javascript" src="json.js"></script> <script type="text/javascript"> var test01 = function(){ var success = function(data){ //当Java方法返回成功时,通过data.key 获得Java中传来的JSONObject数据 alert("1111111 : " + data.testData1 + ' and 2222222 : ' + data.testData2); }; var error = function(e){ alert(e); }; window.plugins.testAndroid01API.test(success, error, "first test data", "second test data"); //"first test data", "second test data"是向Java传递的参数 } </script> 

posted on 2012-06-11 19:08  民谣  阅读(1004)  评论(0编辑  收藏  举报

导航