自定義編寫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();
相關文章
相關標籤/搜索