cordova 自定义 plugin

准备工作

  • 安装cordova
npm install -g cordova
  • 创建cordova工程并添加android平台
cordova create 项目名 包名
cd 项目名
cordova platform add android
  • 安装plugman
npm install -g plugman

创建plugin

  • 创建插件(本博客demo插件名mytoast,包名com.digichain.mytoast)
plugman create --name 插件名 --plugin_id 插件id --plugin_version 插件版本
// 插件id,比如 com.digichain.xin
// 插件版本,比如 1.0.0
  • plugin.xml
plugin{
    id: "插件id",
    version: "插件版本",
    name: "插件名称",
    js-module: {
        name: "模块名称",
        src: "js 文件地址",
        clobbers: {
            target: "H5调用中间件方法"
        }
    },
    platform: {
        source-file: {
            src: "类名",
            target-dir:"插件文件复制到原生项目的位置",
            feature: {
                name: "js中间件通过它调用原生方法"
            },
            uses-permission: "开通的权限"
        }
    }
}
  • 添加平台
plugman platform add --platform_name andorid/ios
//添加后src下会出现android
//并且初始化了java文件、js文件以及plugin.xml
  • mytoast.java 和 mytoast.js

首先我们来看mytoast.java

public class mytoast extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("showToast")) {
            String message = args.getString(0);
            this.showToast(message, callbackContext);
            return true;
        }
        return false;
    }

    private void showToast(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            Activity activity = this.cordova.getActivity();
            android.widget.Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
            callbackContext.success(message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }
}

plugin的方法格式大致如此,其中execute方法是必须的,外部调用方法传递action字段,根据action我们可以调用底层的相关程序,并且通过CallbackContext回调success方法或error方法。这里,我们实现了showToast方法,当action为”showToast”字段视,进行if(action.equals(“showToast”)){}内的操作。

相应的,mytoast.js 文件中我们也要实现相应的方法调用

var exec = require('cordova/exec');

exports.showToast = function (msg, success, error) {
    exec(success, error, 'mytoast', 'showToast', [msg]);
};
  • 添加package.json
//在toast插件文件夹中直接init 一个
npm init

大功告成!!!!!

安装

  • 创建cordova项目并进行安装
cordova create testplugin com.digichain.testplugin
cordova platform add android
cordova plugins add 插件地址
  • 在/www/js/index/js下添加事件进行测试,运行一下
cordova run android

okkkkkkkkkkkkk!!!!!!!!完美!

你可能感兴趣的:(Android)