Cordova与原生交互--传值

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 本地路径
  1. 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();
    }
}


你可能感兴趣的:(Cordova与原生交互--传值)