Cordova自定义插件开发

一、安装依赖plugman
安装plugman

npm install -g plugman

二、创建插件
1、插件创建

plugman create --name [插件名] --plugin_id [插件id] --plugin_version [插件版本]

eg.

plugman create --name ptest --plugin_id ptest01 --plugin_version 1.0.0

2、插件配置
进入插件目录,添加插件支持的平台环境

cd ToastDemo
plugman platform add --platform_name android

添加之后将在ToastDemo目录下产生android目录

其中,ptest01 目录下的 plugin.xml 文件将添加如下内容

<?xml version='1.0' encoding='utf-8'?>
<plugin id="ptest01" version="0.0.1"
    xmlns="http://apache.org/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <name>ptest</name>
    <js-module name="ptest" src="www/ptest.js">
        <clobbers target="ptest" />
    </js-module>
    <platform name="android">
        <config-file parent="/*" target="res/xml/config.xml">
            <feature name="ptest">
                <param name="android-package" value="ptest01.ptest" />
            </feature>
        </config-file>
        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
        <source-file src="src/android/ptest.java" target-dir="src/ptest01" />
    </platform>
</plugin>

标签代表内容如下
在这里插入图片描述
修改 ptest.js 文件

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

module.exports = {
    coolMethod: function (arg0, success, error) {
        exec(success, error, 'ptest', 'coolMethod', [arg0]);
    },

    showToast: function (arg0, success, error) {
        exec(success, error, 'ptest', 'showToast', [arg0]);
    }
}

修改 ptest.java 文件

package ptest01;

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

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

import android.widget.Toast;

/**
 * This class echoes a string called from JavaScript.
 */
public class ptest extends CordovaPlugin {

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

    private void coolMethod(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            Toast.makeText(cordova.getActivity(), message, Toast.LENGTH_SHORT).show(); // 手动加入
            callbackContext.success("from android coolMethod : " + message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }

    private void showToast(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            Toast.makeText(cordova.getActivity(), message, Toast.LENGTH_SHORT).show(); // 手动加入
            callbackContext.success("from android showToast : " + message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }
}

3、初始化插件
进入插件目录

npm init

提示的时候可以直接回车,使用默认值直到结束,将创建一个 package.json 文件

四、插件使用
进入 Cordova 项目目录,安装插件,给 Cordova 项目添加 android 环境

cordova plugin add /d/CordovaProjectPlugins/plugins/ToastDemo

js调用

window.ptest.showToast('Hello ptest0')
// console.log(window.FirstPlugin);
window.ptest.showToast(
  'Hello ptest1',
  (res) => {
    Toast({message: res, position: 'bottom', duration: 2000})
  },
  (error) => {
    Toast({message: error, position: 'bottom', duration: 2000})
  }
)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值