美文网首页
html5移植到android并打包成apk

html5移植到android并打包成apk

作者: 5e1b18effb55 | 来源:发表于2016-10-19 15:42 被阅读0次

    最近在给霍尔果斯做一个项目,项目是用h5写的,在android端使用WebView加载显示,效果还说得过去,但是太依赖网络,然而霍尔果斯那边网络都是2G网,偶尔有wifi,范围也是有限的可怜,所以,那边要求把数据放到本地。

    任务来了,要把一个原先是h5的项目硬生生放到android本地去加载。。。

    首先,在项目中创建一个asserts文件夹,把h5项目放到这个文件夹下面(因为android打包的时候,这个文件夹下面的东西是不会被压缩的),然后用你的WebView加载本地html首页,像这样:

    webView.loadUrl("file:///android_asset/index.html");

    可以显示index.html页面了,这样本以为这样就大功告成了,可是当点击跳转其他页面的时候,一点反应也没有,还有就是,如果指定的跳转链接在网上,是可以打开的,就是指定的本地跳转怎么也没有反应。。

    网上有人说把跳转链接全部替换成href="file:///android_asset/index.html"这种形式,亲测没用。。

    网上还有人直接为每一个html创建了一个activity,跳转的时候,去开启另一个activity,感觉很不靠谱,连试都没试,不过,这倒是给我一个提醒,如果能跳转activity的话,说明是能捕获到事件的,既然这样,我直接再调用一次loadUrl方法就好了,还有必要去重新开启一个activity吗?

    那么,问题是,那个事件怎么捕获呢?

    前面已经说过,只有跳转是相对路径的不能跳,所以自己拼一个http的请求,例如:我想跳转到本地的同一文件夹下的map.html文件,那么我可以构造一个http://www.map.html链接,然后去WebView拦截这一个请求,当拦截到的时候,说明我发起了跳转map.html的请求,这时候你只需要加载一下本地的map.html即可,像这样:

    webView.loadUrl("file:///android_asset/map.html");

    好了说到这里,问题已经基本解决了,还存留的问题就是,你必须要把h5项目中的所有相对跳转链接自己构造以便才可以。。不过总比你为每一个一面创建一个activity强点。

    相关文章

      网友评论

          本文标题:html5移植到android并打包成apk

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