本文讲解如何使用PhoneGap(Cordova) 调用Android中的方法
1. 使用原生的方法
在演示前介绍下不使用PhoneGap前是如何实现的
http://blog.csdn.net/qqgrid/article/details/41623621
2.使用PhoneGap的方法
注意,例子使用的是cordova-2.6.0.js
(1)创建自定义的Plugin
action:动作的标记
args: js端提交的参数
public class MyPlugin extends CordovaPlugin {
public static final String ACTION_TEST = "test";
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
Log.e("execute","action:"+action);
try {
if (ACTION_TEST.equals(action)) {
String message = args.getString(0);
callbackContext.success("message :"+message);
return true;
}
callbackContext.error("Invalid action");
return false;
} catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
callbackContext.error(e.getMessage());
return false;
}
}
}
(2)配置config.xml
在res/xml/config.xml中配置Plugin
<plugins>
<plugin name="MyPlugin" value="com.phonegapdemo.MyPlugin"/>
</plugins>
<plugins>
<plugin name="MyPlugin" value="com.phonegapdemo.MyPlugin"/>
</plugins>
(3)创建myPlugin.js
var MyPlugin = {
CalendarPlugin: function (success, fail, message) //message为调用的参数,可按实际添加在下面[]中
{
return PhoneGap.exec(
function (args) {success(args);}, //返回成功调用function
function (args) {fail(args);}, //返回失败调用的function
'CalendarPlugin', //java类
'test',//action
[message] //传给android端excute的args参数
);
}
,test:function(){ //多个funcion添加方法
alert("test");
}
};
(4)index.html代码
导入cordova-2.6.0.js
导入myPlugin.js
思路:通过onclick调用clickAction()方法,获得message的value后,调用前面myPlugin中定义的方法里面CalendarPlugin()方法,并传入参数,包括successFunction,failFunction,message
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<script type="text/javascript" src="cordova-2.6.0.js"></script>
<script type="text/javascript" src="js/myPlugin.js"></script>
<script type="text/javascript">
function clickAction(){
var str = document.getElementById("message").value;
MyPlugin.CalendarPlugin(
function(r){alert("success | " +r);},
function(e){alert(e+" | error");},
str
);
}
</script>
<title>Hello World</title>
</head>
<body>
<input type="text" id="message"/>
<input type="button" οnclick="javaScript:clickAction();" value="click">
<span id="content"></span>
</body>
</html>