android网页离线保存

将网页保存为离线mht文件,没有找到第三方开源库,网上的例子:

http://blog.csdn.net/dongle2001/article/details/2557434

http://blog.sina.com.cn/s/blog_3fd24f6c0100ig2r.html

当然要想编译通过可能还需要相关的jar包,可以搜到,保存的mht文件格式会有问题,但是目前有问题编码格式有问题,而且有些资源下载不到.

后面使用了下uc和apus的离线保存功能,保存的文件打开研究了下,和上面的具体实现不一样,他们产生的mht文件的from源长得有点奇怪,并不是邮箱,而是

<Saved by Blink>

<Saved by WebKit>
直觉告诉我,可能是使用其他的开源库或者是原生webKit中的api,然后就各种找,后面发现了这个贴子: 
https://lists.webkit.org/pipermail/webkit-gtk/2014-January/001772.html 
然后就开始找api,最后在WebView中发现了

     /**
     * Saves the current view as a web archive.
     *
     * @param filename the filename where the archive should be placed
     */
    public void saveWebArchive(String filename) {
        checkThread();
        mProvider.saveWebArchive(filename);
    }
后面WebViewClient尝试在onPageFinished后调用下面的逻辑

File file = new File(Environment.getExternalStorageDirectory(),"demo.mht");
webView.saveWebArchive(file.getAbsolutePath());
通过es浏览器查看新生成的文件,果断就有一个demo.mht.而且打开查看内容From就是

<Saved by Blink>
所以网页离线保存的关键就是使用webview的saveWebArchive方法.结果就这么简单.

坑点
Kitkat and above 保存方式为原生mht,支持file协议,可以直接访问.而低于Kitkat则保存成功,打开则需要通过io将文件转化为String,然后通过loadDataWithBaseURL方法加载.具体参考下面的贴子. 
http://stackoverflow.com/questions/17484115/save-webpage-for-offline-use-and-invoke-the-same-android/40882679#40882679

saveWebArchive 支持版本为api level 11及以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值