PhoneGap通过Plugin Js调用Java并互相传参

本文详细介绍如何使用Java开发Cordova插件,包括创建继承自Plugin的类并实现execute方法,以及在XML和JS中注册插件的具体步骤。通过实例演示了如何在JS中调用Java方法,并展示如何处理跨平台数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Java代码

一个继承自Plugin的类,并实现execute方法。

 

public class test01 extends Plugin{

    public static final String ACTION = "test";
    
    @Override
    public PluginResult execute(String action, JSONArray data, String callbackId) {
        // TODO Auto-generated method stub
        PluginResult result = null;  
        JSONObject jsonObj = new JSONObject();//可以返回给JS的JSON数据
        if(ACTION.equals(action)){
            try {
                String testData1 = data.getString(0);//JS中传来的JSON格式的数据
                String testData2 = data.getString(1);
                
                Log.e("test!!!", "This is testData1 " + testData1);
                Log.e("test!!!", "This is testData2 " + testData2);
                
                jsonObj.put("testData1", testData1 + " after Plugin");
                jsonObj.put("testData2", testData2 + " after Plugin");
                
                result = new PluginResult(PluginResult.Status.OK, jsonObj);
                //返回成功时,将Java代码处理过的JSON数据返回给JS
            } catch (Exception e) {
                // TODO Auto-generated catch block
              
                e.printStackTrace();
            }  
            
        }
        
        
        return result;
    }

}
 

 

2.在xml中注册

在\res\xml\plugins.xml文件中,加入

 

<plugin name="test01" value="包名.test01"/>

 

name指的是他的别名(貌似必须与类名相同),value是他真正的类名

 

3.在js中注册此插件

在cordova-1.7.0.js加入如下函数

 

var testAndroid01API=function(){};    
testAndroid01API.prototype.test = function(success, error, testData1, testData2){
    return PhoneGap.exec( success, error, 
                'test01', //java类名,plugins.xml中注册的名字
                'test',    //action,Java方法中用来匹配的字段
                [testData1, testData2]    //params 传递的参数,Array形式
    );
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin('testAndroid01API', new testAndroid01API());
});
 

 

4.在js中调用

 

<script type="text/javascript" src="cordova-1.7.0.js"></script>
<script type="text/javascript" src="json.js"></script>

<script type="text/javascript">
var test01 = function(){
var success = function(data){ //当Java方法返回成功时,通过data.key 获得Java中传来的JSONObject数据
                alert("1111111 : " + data.testData1 + '   and 2222222 : ' + data.testData2); 
            }; 
             
var error = function(e){ 
                alert(e); 
            }; 

window.plugins.testAndroid01API.test(success, error, "first test data", "second test data"); 
//"first test data", "second test data"是向Java传递的参数
}
</script>
 

 

5.在html中点击按钮测试

 

<button type="button" onclick="test01()">Click Me!</button>
 

 

LogCat中会看到由JS传来的数据,随后页面会alert Java传回JS的数据。

 

原文地址:http://www.cnblogs.com/wuwangSaber/archive/2012/05/28/2521321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值