美文网首页
Cordova与原生交互--传值

Cordova与原生交互--传值

作者: lyzaijs | 来源:发表于2018-05-23 14:55 被阅读654次

    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与原生交互--传值

          本文链接:https://www.haomeiwen.com/subject/ciklqftx.html