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.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>
5.在html中點擊按鈕測試
<button type="button" onclick="test01()">Click Me!</button>
LogCat中會看到由JS傳來的數據,隨后頁面會alert Java傳回JS的數據。