这个例子只是完成了很简单功能,接受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();