Cordova插件開發-Android極簡插件



如下全部操做的前提是:已經成功安裝了Cordova的Android開發環境php



  • 安裝 plugman
    指令:npm install plugman -g

  • 建立 plugin
    指令:plugman create --name <插件名稱> --plugin_id <插件id> --plugin_version <插件版本>
    如:plugman create --name CDVPlugin --plugin_id com.lben.cdv_plugin --plugin_version 1.0.0
    截至這一步,項目結構以下圖(指令結束會自動建立 CDVPlugin 文件夾)
    項目結構

  • 添加安卓平臺
    進入項目(cd <插件名稱>【如上的CDVPlugin】)
    指令:plugman platform add --platform_name <平臺名稱>
    此處:plugman platform add --platform_name android
    截至這一步,項目結構以下圖
    x項目結構-Android平臺

  • 關於 plugin.xml
<?xml version='1.0' encoding='utf-8'?>
<!-- 定義了插件 ID,版本 -->
<plugin id="com.lben.cdv_plugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 定義了插件名稱 -->
    <name>CDVPlugin</name>
    <!-- 指定到公共 JS 接口的路徑 -->
    <js-module name="CDVPlugin" src="www/CDVPlugin.js">
        <!-- 定義了 JS 調用插件的方法 -->
        <clobbers target="cordova.plugins.CDVPlugin" />
    </js-module>
    <platform name="android">
        <!-- 指明插入到 config.xml 的位置,以使平臺瞭解額外的插件代碼庫 -->
        <config-file parent="/*" target="res/xml/config.xml">
            <!-- 在 config.xml 插入的內容 -->
            <feature name="CDVPlugin">
                <param name="android-package" value="com.lben.cdv_plugin.CDVPlugin" />
            </feature>
        </config-file>
        <!-- 指定使用此插件會加入到安卓 AndroidMainfest.xml 裏面的權限項目 -->
        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
        <!-- 指出插件本地代碼的位置,以及插入到安卓平臺源碼的目錄 -->
        <source-file src="src/android/CDVPlugin.java" target-dir="src/com/lben/cdv_plugin/CDVPlugin" />
    </platform>
</plugin>
複製代碼

  • 修改 JS 和 JAVA 代碼
  1. JS代碼
var exec = require('cordova/exec');

var mTest = function (_msg, _fnSucc, _fnFail) {
    /* 參數說明 * param1 -> 成功回調 * param2 -> 失敗回調 * param3 -> 插件源碼庫類名 * param4 -> 插件源碼庫方法名 * param5 -> 插件源碼庫所需額外參數 */
    exec(_fnSucc, _fnFail, "CDVPlugin", "mTest", [_msg])
}

exports.mTest = mTest;
複製代碼
  1. Java代碼
// 等於插件 ID
package com.lben.cdv_plugin;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

// 繼承 CordovaPlugin
public class CDVPlugin extends CordovaPlugin {

    // 重寫 execute 方法
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        switch (action) {
        case "mTest":
            String message = args.getString(0);
            this.mTest(message, callbackContext);
            return true;
        default:
            return false;
        }
    }

    private void mTest(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            callbackContext.success("調用成功:" + message);
        } else {
            callbackContext.error("調用失敗:未能檢測到有效參數。");
        }
    }
}
複製代碼

  • 生成 package.json 文件
    指令:npm init

  • 安裝插件
    打開 Cordova 項目
    執行指令:cordova plugin add <插件路徑>
    如:cordova plugin add D:\Adocuments\CDVPlugin

  • 調用插件
CallPlugin: function () {
        try {
            // 調用方式在插件的 plugin.xml 已作配置
            cordova.plugins.CDVPlugin.mTest("測試插件1", _res => {
                alert("調用成功:" + _res);
            }, _err => {
                alert("調用失敗:" + _err);
            })
        } catch (_e) {
            alert(JSON.stringify(_e, "\n", 4));
        }
    }
複製代碼
相關文章
相關標籤/搜索