引入jar包
在cordova的安装目录下找到framework文件夹,下面是相对路径
...\.cordova\lib\npm_cache\cordova-android\5.2.2\package\framework
然后在该文件下执行ant命令打出jar包
ant jar
然后就可以把cordova.jar引入as工程了。
添加h5资源
将网页资源放置到as工程中的assets文件夹下,页面中必须引用cordova.js(android和ios的不一样)
配置cofig.xml文件
引入jar后在as工程中的res文件新建一个xml目录,并放置config.xml文件,config.xml的基本信息如下
//feature标签为插件信息,扩展新插件时要在这边配置信息
家和e站
A sample Apache Cordova application that responds to the deviceready event.
Wei-Ju Team
//web入口页
cordova使用
使用下面初始化代码获得CordovaWebView对象
public static CordovaWebView getCordovaWebView(Activity context)
{
if (cordovaWebView == null)
{
ConfigXmlParser parser = new ConfigXmlParser();
parser.parse(context);//解析res/xml/config.xml文件
CordovaPreferences preferences = parser.getPreferences();//获得配置参数
ArrayList pluginEntries = parser.getPluginEntries();//获得插件列表
cordovaWebView = new CordovaWebViewImpl(CordovaWebViewImpl.createEngine(context, preferences));
cordovaInterface = new CordovaInterfaceEx(context);
cordovaWebView.init(cordovaInterface, pluginEntries, preferences);
}
return cordovaWebView;
}
然后就可以把CordovaWebView添加到相应的视图树当中
addContent(cordovaWebView.getView());
js调用插件
我们在重新看一下cofig.xml中插件的描述信息,比如支付插件
//Pay为插件名称,在js需要传入对应名称才能调用相应插件
//插件的完整包名类名
//这边value为true时,则插件在应用启动时就会初始化
然后看一下我们的插件实现类
public class PayPlugin extends CordovaPlugin //需要继承CordovaPlugin 类
{
@Override//需要重写execute方法
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException
{
if ("pay".equals(action))//该插件对js提供的动作,用以区分js调用了插件的哪个功能
{
}
return super.execute(action, args, callbackContext);//return false则表示找不到action
}
}
再然后,我们在js中,通过cordova.js中的cordova对象的exec方法来调用原生插件的方法
//Pay插件名称,pay为action名称, [chargeInfo]为参数数组
cordova.exec(null, null, "Pay", "pay", [chargeInfo])
在插件类中我们通过args来获取传递过来的参数
if ("pay".equals(action))
{
String charge = args.getString(0);
}
如果我们需要返回一些结果给js的话,可以通过CallbackContext对象
//只能传递字符串
callbackContext.success("success");//成功回调
callbackContext.error("fail");//失败回调
在刚才的js代码中注册回调即可收到原生返回来的消息了
function success(re){//成功回调
}
function fail(re){//失败回调
}
cordova.exec(success, fail, "Pay", "pay", [chargeInfo])
原生调用js方法
有时候需要原生主动调用js的方法,可以通过下面的代码
String format = String.format("javascript:excJSAction('%s','%s')", action, args);
cordovaWebView.loadUrl(format);
然后我们在web页面中,必须申明有要调用的方法
var excJSAction = function(action, args) {
}