phoneGap+android 单插件和多插件的注册

以下方法是建立在已经搭建好phoneGap+android的环境下运行的,编译平台为eclipse。
phoneGap版本为2.9.1。

用途:js与java的数据交互,调用方式为回调函数。

单插件注册流程如下:

有4个地方需要修改:

1./xml/config.xml
2.cordova.js
3.创建一个类(一个插件对应一个,多插件则要创建多个)
4.网页js调用代码

举个例子,我想在js中创建一个名叫connectServ的js函数,用java中的responConctSrev类进行处理相互传参。过程如下:

在config.xml添加

<feature name="responConctSrev">
    <param name="android-package" value="com.myplugin.responConctSrev"/>
</feature>

作用是声明一个回调函数类的位置。

在cordova.js最后添加

/** 自定义插件*/  
cordova.define("cordova/plugin/console",function(require, exports, module) {
    var exec = require('cordova/exec');
    var modulemapper = require('cordova/modulemapper');
    var console = {
        connectServ:function(msg){
            exec(function(succseeMsg){ //成功回调
                    alert(succseeMsg);
            },function(errorMsg){   // 失败回调
            //      alert("nima");
                            alert(errorMsg);
            },"responConctSrev"
            ,msg
            ,[]);
        },

    };

    module.exports = console;
});

define("cordova/plugin/console/symbols", function(require, exports, module) {
var modulemapper = require('cordova/modulemapper');

modulemapper.clobbers('cordova/plugin/console', 'console');

});


//注意此是cordova.js文件最后一行
})();var PhoneGap = cordova;

注意一下 var console={….};这个变量。这里面有一个方法,叫connectServ,有5个参数,网上有详细的介绍,我就说说几个参数功能。
第一个参数为成功时的回调函数
第二个参数为失败时的回调函数
第三个参数为在config.xml中注册的class名字
第四个参数为传入的string字符串变量,会通过调用传到java文件中
第五个参数为一个jason数组

其他为模板不变。

根据config.xml的配置创建一个responConctSrev类
首先新建一个名叫com.myplugin的包,
然后在此包下创建一个名叫responConctSrev的class。
内容如下

package com.myplugin;

import org.apache.cordova.api.CallbackContext;  
import org.apache.cordova.api.CordovaPlugin;  
import org.json.JSONArray;  
import org.json.JSONException;  

import android.util.Log;  

public class responConctSrev extends CordovaPlugin {  

    //private String helloAction = "helloAction";  
    @Override  
    public boolean execute(String str, JSONArray args, CallbackContext callbackContext) throws JSONException 
    {  
        //js成功调用后会传入一个字符串参数str 
        //callbackContext.success("congratulation,success"); return true;  //回调成功时发送的结果,js会接收到
        //callbackContext.error("sorry,error"); return false;
        Log.i("Hey", str);
        return true;
    }  
}  

最后通过js调用,调用方式为console. connectServ(要传入的字符串内容).

多插件注册

在以上的基础上稍加修改即可
比如我要增加一个js方法startActivity对应java中的responActivity类
1.config.xml文件中添加

<feature name="responActivity">
    <param name="android-package" value="com.myplugin.responActivity"/>
</feature>

同样在com.myplugin包下创建一个responActivity类,内容如下:

package com.myplugin;

import org.apache.cordova.api.CallbackContext;  
import org.apache.cordova.api.CordovaPlugin;  
import org.json.JSONArray;  
import org.json.JSONException;  


import android.util.Log;  


//startactivity 回调函数
public class responActivity extends CordovaPlugin{
    //private String helloAction = "helloAction";  
    @Override  
    public boolean execute(String str, JSONArray args, CallbackContext callbackContext) throws JSONException 
    {  
        //js成功调用后会传入一个字符串参数str 
        //callbackContext.success("congratulation,success"); return true;  //回调成功时发送的结果,js会接收到
        //callbackContext.error("sorry,error"); return false;
        Log.i("activity", str);
        return true;
    }   
}

可以看到结构基本上都是一致的。
在cordova.js 添加插件方法注册,最终会变成如下:

/*
** 自定义插件*/  
cordova.define("cordova/plugin/console",function(require, exports, module) {
    var exec = require('cordova/exec');
    var modulemapper = require('cordova/modulemapper');
    var console = {
        connectServ:function(msg){
            exec(function(succseeMsg){ //成功回调
                            sleep(1000);
                            alert(succseeMsg);
            },function(errorMsg){   // 失败回调
            //      alert("nima");
                            alert(errorMsg);
            },"responConctSrev"
            ,msg
            ,[]);
        },
      startActivity:function(msg){
            exec(function(succseeMsg){ //成功回调
                            sleep(1000);
                            alert(succseeMsg);
            },function(errorMsg){   // 失败回调
            //      alert("nima");
                            alert(errorMsg);
            },"responActivity"
            ,msg
            ,[]);
        }
    };

    module.exports = console;
});

define("cordova/plugin/console/symbols", function(require, exports, module) {
var modulemapper = require('cordova/modulemapper');

modulemapper.clobbers('cordova/plugin/console', 'console');

});



})();var PhoneGap = cordova;

以上可以看成我只是在var console = {}添加了一个方法,就完成了第二个插件的注册。
调用方式依然为console. startActivity(字符串)

对于console的注册还是不太明白。还不知道怎么改。

调用部分代码

    function test(msg)
        {
            console.startActivity(msg);
            console.connectServ("hehe");
        }

成功是会输出一个输入的字符串。
图1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值