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));
        }
    }
复制代码
相关文章
相关标签/搜索