1. 插件由四部分组成:
1> 配置文件xml,关联js和java;
2>java类,继承了CordovaPlugin;
3> js文件,调用cordova.exec方法,进入phonegap内核;
4> html文件,其引入cordova.js和上面的js文件,调用js封装的方法。
2. xml配置文件的实现
<feature name="Plugin" >
<param
name="android-package"
value="cn.china.client.plugins.Plugin" >
</param>
</feature>
feature的name是一个feature的名字;
param的name照抄上面的就好;
param的value是java类的准确位置。
3. java文件的实现
public class V3CachePlugin extends CordovaPlugin {
public V3CachePlugin() {
}
@Override
public boolean execute(String action, CordovaArgs args,
CallbackContext callbackContext) throws JSONException {
return false;
}
}
继承cordovaPlugin。
至于如何给js返回数据,看下一篇文章。
4. js的实现,主要封装phonegap的方法。
var Plugin = {
get : function(success, filed, url, status, version) {
cordova.exec(success, filed, "Plugin", "get", [currenturl, networkstatus, contentversion]);
},
set : function(success, filed, url, version, str, img) {
cordova.exec(success, filed, "Plugin", "set", [currenturl, contentversion, jsonstr, haveImg]);
},
};
封装的方法是cordova.exec,其参数有:成功的回调;失败的回调;服务名(也就是feature配置的名字);action动作,用来区分方法;参数。
也给html提供跟直接的方法。
Plugin其实是个类,get和set是里面的方法。
5. html的实现
<!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" />
<title>Test Cache</title>
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="js/jquery.mobile-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="cordova.js" ></script>
<script type="text/javascript" src="plugins/Plugin.js" ></script>
</head>
<body>
<div id="div">
<input type="button" value="button" id="btnShowToast">
</div>
<script type="text/javascript">
$('#btnShowToast').click(function(e) {
alert("hhhh");
var url = "http://www.baidu.com";
var status = "true";
var version = "1.0";
var str = {
url : "http://192.168.2.39:8080/app/test.png",
};
V3CachePlugin.get(getSuccess, getError, currenturl, networkstatus, contentversion);
});
function getSuccess(entry) {
alert("get success:" + entry)
}
function getError(error) {
alert("get error:" + error);
}
</script>
</body>
</html>