cordova与原生的交互都是基于插件的形式提供(例如,获取设备信息、网络状态等)。依据项目业务就需要自定义插件
1.使用plugman创建MiPlugin插件,并安装到项目中(会生成对应的模板文件 plugin.xml MiPlugin.js MiPlugin.java 等文件)
1、安装plugman
npm install -g plugman
2、创建插件
plugman create --name MiPlugin --plugin_id cordova-plugin-mi --plugin_version 1.0.0
cd MiPlugin
3. 增加Android平台
plugman platform add --platform_name android
4. 生成package.json
npm init
5. 安装本地插件
cordova plugin add 本地路径
cordova plugin list查看插件是否安装成功
MiPlugin.js
在js文件添加hello方法
var exec = require('cordova/exec');
// Reference name for the plugin
PLUGIN_NAME = 'MiPlugin';
// Plugin methods on the native side that can be called from JavaScript
pluginNativeMethod = {
COOLMETHOD: 'coolMethod',
HELLO : 'hello'
}
var MiPlugin = {
coolMethod : function (arg0, success, error) {
exec(success, error, PLUGIN_NAME, pluginNativeMethod.COOLMETHOD, [arg0]);
},
helloworld : function (arg0,success,error) {
exec(success, error, PLUGIN_NAME, pluginNativeMethod.HELLO, [arg0]);
}
}
module.exports = MiPlugin;
MiPlugin.java
在MiPlugin.java添加对应的hello方法
public class MiPlugin 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;
} else if (action.equals("hello")) {
this.jsHello(message,callbackContext);
}
return false;
}
private void coolMethod(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
private void jsHello(String message, CallbackContext callbackContext) {
System.out.println("hello world");
callbackContext.success();
}
}