美文网首页
cordova集成使用说明--android

cordova集成使用说明--android

作者: 我是午饭 | 来源:发表于2017-02-10 16:25 被阅读1510次

    引入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的基本信息如下

    <?xml version='1.0' encoding='utf-8'?>
    <widget id="com.jahome.ezhan.merchant" version="1.1.0.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
        <feature name="Whitelist">//feature标签为插件信息,扩展新插件时要在这边配置信息
            <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
            <param name="onload" value="true" />
        </feature>
        <feature name="View">
            <param name="android-package" value="org.apache.cordova.view.ViewPlugin" />
            <param name="onload" value="true" />
        </feature>
        <feature name="Pay">
            <param name="android-package" value="org.apache.cordova.pay.PayPlugin" />
            <param name="onload" value="false" />
        </feature>
        <feature name="Image">
            <param name="android-package" value="org.apache.cordova.image.ImagePlugin" />
            <param name="onload" value="false" />
        </feature>
        <name>
            家和e站
        </name>
        <description>
            A sample Apache Cordova application that responds to the deviceready event.
        </description>
        <author email="wuhuarong@star-net.cn" href="">
            Wei-Ju Team
        </author>
        <content src="views/index.html" />//web入口页
        <access origin="*" />
        <allow-navigation href="*" />
        <allow-intent href="*" />
        <preference name="loglevel" value="DEBUG" />
        <preference name="DisallowOverscroll" value="true" />
        <preference name="LoadUrlTimeoutValue" value="6000" />
        <preference name="AndroidPersistentFileLocation" value="Compatibility" />
    </widget>
    

    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<PluginEntry> 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中插件的描述信息,比如支付插件

     <feature name="Pay">//Pay为插件名称,在js需要传入对应名称才能调用相应插件
            <param name="android-package" value="org.apache.cordova.pay.PayPlugin" />//插件的完整包名类名
            <param name="onload" value="false" />//这边value为true时,则插件在应用启动时就会初始化
        </feature>
    

    然后看一下我们的插件实现类

    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

          本文链接:https://www.haomeiwen.com/subject/wtggittx.html