您的位置:首页 > Web前端 > JavaScript

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

2012-05-14 16:13 716 查看
1.Java代码

publicclasstest01extendsPlugin{

publicstaticfinalStringACTION="test";
@Override
publicPluginResultexecute(Stringaction,JSONArraydata,StringcallbackId){
//TODOAuto-generatedmethodstub
if(ACTION.equals(action)){
Log.e("test","testpluginjs->java~~~~");
Log.e("test","testpluginjs->java~~~~");
Log.e("test","testpluginjs->java~~~~");
Log.e("test","testpluginjs->java~~~~");
}
returnnull;
}

}


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

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

returnnewPluginResult(PluginResult.Status.OK,JSONObject);//返回成功
returnnewPluginResult(PluginResult.Status.ERROR,"error");//返回失败


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

2.在xml中注册

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

<pluginname="test01"value="包名.test01"/>


name指的是他的别名,value是他真正的类名

3.在js中注册此插件

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

vartestAndroid01API=function(){};
testAndroid01API.prototype.test=function(params,success,fail){
returnPhoneGap.exec(
function(args){
success(args);
},
function(args){
fail(args);
},
'test01',//java类
'test',//action
[params]//params
);
};

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



4.在js中调用

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


5.在html中点击按钮测试

<!DOCTYPEHTML>
<html>
<head>
<title>PhoneGap</title>
<scripttype="text/javascript"charset="utf-8"src="cordova-1.7.0.js"></script>
</head>
<body>
<h1>HelloWorld</h1>
<buttontype="button"onclick="test01()">ClickMe!</button>

</body>
</html>


LogCat中会看到Java类中的Log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: