日期:2014-05-16 浏览次数:20614 次
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-1.7.0.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>?
?