zoukankan      html  css  js  c++  java
  • 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的数据。

  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/comsokey/p/PhoneGapActivity.html
Copyright © 2011-2022 走看看