PhoneGap 調用activity中的方法


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.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的數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM