這個例子只是完成了很簡單功能,接受js傳入的參數,在原樣返回給js,只是爲了更清晰的描述編寫的方法。java
1、編寫插件Java文件
android
package com.***.***; // 你的包名 import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaArgs; import org.apache.cordova.CordovaPlugin; import org.json.JSONException; import org.json.JSONObject; // 集成CordovaPlugin 並重寫 execute 方法 public class First extends CordovaPlugin { @Override public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { // TODO Auto-generated method stub // 獲取js傳入的參數 JSONObject argsJsonObject = args.getJSONObject(0); String name = argsJsonObject.getString("name"); Integer age = argsJsonObject.getInt("age"); // 整理要返回給js的json數據 final JSONObject json = new JSONObject(); json.put("name", name); json.put("age", age); // 完成交互 cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 將重組好的json數據返回給js callbackContext.success(json); } }); return true; } }
2、編寫插件jsapache
cordova.define("cordova-plugin-first.First", function(require, exports, module) { function First() { } // 定義一個show方法 First.prototype.show = function() { // 準備提交給java的參數 var options = { name: 'wangyuan', age: 25 }; // 成功回調 var successCallback = function(data) { alert(JSON.stringify(data)); } // 失敗回調 var errorCallback = function() { } // 開始與java進行交互 cordova.exec(successCallback, errorCallback, "First", "show", [options]); } if (!window.plugins) { window.plugins = {}; } window.plugins.first = new First(); module.exports = window.plugins.first; // 另外一種寫法 /* First.install = function () { if (!window.plugins) { window.plugins = {}; } window.plugins.first = new First(); return window.plugins.first; }; cordova.addConstructor(First.install);*/ });
3、修改res/xml/config.xmljson
// 在widget中增長 <feature name="First"> <param name="android-package" value="com.***.***.First" /> </feature>
4、修改assets/www/cordova_plugins.jside
// 在module.exports增長一個對象 { "file": "plugins/cordova-plugin-first/www/First.js", "id": "cordova-plugin-first.First", "clobbers": [ "window.plugins.first" ] }
5、使用方法ui
window.plugins.first.show();