cordova 在android的端使用

目的:将h5开发的功能模块嵌入到原生android中

打开h5端开发的cordova应用的文件夹

进入platforms文件夹

进入android

将里面的CordovaLib作为一个modle导入我们的原生项目并添加为依赖;

接着将assets目录中的www文件夹复制到我们原生项目里的assets目录下,这里面就是h5小伙伴提供给我们的资源,需要我们去调用;

接着我们打开src目录

将里面的org文件夹复制到我们项目中的java/main文件夹下,注意不要复制到java/test目录下了哦,不然会报ClassNotFound错误

最后将res文件加下xml文件夹里的config.xml文件复制到我们自己项目的res/xml文件夹中。

注意修改一下第二行id=“(这里的包名该为我们自己项目的报名)”

好了,到这里导入就完成了。

接下来就是如何使用h5小伙伴提供给我们的资源了

www文件夹里的这些html就是h5小伙伴写好的各种模块,我们如何调用呢?很简单

比如我要调用homeworkEntry模块:

public class SecondActivity extends CordovaActivity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        loadUrl("file:///android_asset/www/homeworkEntry.html");
    }
}

只需要写一个activity继承cordova提供的CordovaActivity,直接loadUrl就可以啦。

 


另外,也可以使用cordova提供的systemwebview作为一个控件替代系统原生的webview。

加载远程服务器上的HTML

webView = (SystemWebView) findViewById(R.id.cordova_webview);
ConfigXmlParser parser = new ConfigXmlParser();
parser.parse(this);//这里会解析res/xml/config.xml配置文件
SystemWebViewEngine engine=new SystemWebViewEngine(webView);
engine.clearCache();//清除旧cookie
CordovaWebView cordovaWebView = new CordovaWebViewImpl(engine);//创建一个cordovawebview
cordovaWebView.init(new CordovaInterfaceImpl(this), parser.getPluginEntries(), parser.getPreferences());//初始化
String token=LekeStudentApplication.getInstance().mParameters.getToken();
String url="http://192.168.20.71/auth/common/voiceExercise/showStudentAlbumList.htm?";
ICordovaCookieManager cookieManager=engine.getCookieManager();
cookieManager.setCookiesEnabled(true);
cookieManager.setCookie(url,"ticket="+token+";domain=voice.leke.cn; path=/");//设置新cookie
webView.loadUrl(url);
webView.setWebViewClient(new SystemWebViewClient(engine){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

setWebViewClient中重写shouldOverrideUrlLoading是为了能够在cordoca中打开html中的链接,另外还需要自己写一个plugin重写里面的

 

public Boolean shouldAllowRequest(String url) {
    return true;
}

@Override
public Boolean shouldAllowBridgeAccess(String url) {
    return true;
}

 两个方法,这两个方法返回true的意思分别是允许加载外部网址,和允许外部网址使用cordova提供的plugin。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值