自定义编写cordova android插件

这个例子只是完成了很简单功能,接受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();
相关文章
相关标签/搜索