一、安装依赖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 文件将添加如下内容
<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>ptestname>
<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>
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})
}
)