cordova集成使用说明--android

引入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) {
}

你可能感兴趣的:(cordova集成使用说明--android)