• 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的数据。

  • 相关阅读:
    python 2
    Python 1 practice
    python 1
    Python多线程_笔记
    背景自适应不会随浏览器界面放大速效而改变
    平行四边形定理
    动态规划3(区间+树形)
    素数快速生成
    设CPU共有16根地址线,8根数据线,,,
    贪心+huffman编码+模拟退火+分治
  • 原文地址:https://www.cnblogs.com/comsokey/p/PhoneGapActivity.html
Copyright © 2020-2023  润新知