PhoneGap中通过Plugin实现JS调用Java代码

1.Java代码

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

        if(ACTION.equals(action)){

            Log.e("test", "test plugin js -> java~~~~");

            Log.e("test", "test plugin js -> java~~~~");

            Log.e("test", "test plugin js -> java~~~~");

            Log.e("test", "test plugin js -> java~~~~");

        }

        return null;

    }

            

}

 

在Java代码中,要有一个继承自Plugin的类,重写其中的execute方法。

execute方法的返回值可以是JSONObject,在JS中对JSON进行解析。如下

return new PluginResult(PluginResult.Status.OK, JSONObject); //返回成功

return new PluginResult(PluginResult.Status.ERROR,"error");  //返回失败

参数中的action,用于在js调用中输入并与此方法匹配,稍后会提到。

 

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(params, success, fail){

    return PhoneGap.exec(

                function(args){

                    success(args);

                }, 

                function(args){

                    fail(args);

                }, 

                'test01', //java类

                'test',    //action

                [params]    //params

    );

};

PhoneGap.addConstructor(function() {
PhoneGap.addPlugin('testAndroid01API', new testAndroid01API());
});

 

4.在js中调用

var test01 = function(){

window.plugins.testAndroid01API.test(null,function(r){},function(e){}); 

}

 

5.在html中点击按钮测试

<!DOCTYPE HTML>

<html>

<head>

<title>PhoneGap</title>

<script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>

</head>

<body>

<h1>Hello World</h1>

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



</body>

</html>

LogCat中会看到Java类中的Log

你可能感兴趣的:(PhoneGap)