HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能。近来工作中也要用到HTML5离线应用功能,由于是在Android平台上做,所以自然而然的选择Webview来解析网页。但如何使Webivew支持HTML5离线应用功能呢,经过反复摸索和上网查找资料,反复做试验终于成功了。

首先需配置webview的的一些属性,假设activity中已经有了一个Webview的实例对象,名为m_webview,然后增加以下代码:

WebSettings webseting = m_webview.getSettings();webseting.setDomStorageEnabled(true);           webseting.setAppCacheMaxSize(1024*1024*8);//设置缓冲大小,我设的是8MString appCacheDir = this.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();    webseting.setAppCachePath(appCacheDir);webseting.setAllowFileAccess(true);webseting.setAppCacheEnabled(true);webseting.setCacheMode(WebSettings.LOAD_DEFAULT);

webview可以设置一个WebChromeClient对象,在其onReachedMaxAppCacheSize函数对扩充缓冲做出响应。代码如下:

m_webview.setWebChromeClient(m_chromeClient);private WebChromeClient m_chromeClient = new WebChromeClient(){//扩充缓存的容量  @Overridepublic void onReachedMaxAppCacheSize(long spaceNeeded,  long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {  quotaUpdater.updateQuota(spaceNeeded * 2);  }        };

其次要修改http服务器中的配置,使其支持text/cache-manifest,我使用的是apache服务器,是windows版本的,在apache的conf文件夹中找到mime.types文件,打开后在文件的最后加上
“text/cache-manifest              mf  manifest”,重启服务器即可。这一步很重要,我就是因为服务器端没有配置这个,所以失败了好多次,最后是在附录链接1的回复中找到的线索。

经过以上设置Webview就可以支持HTML5的离线应用了。

附录链接1中说缓冲目录应该是getApplicationContext().getCacheDir().getAbsolutePath();但我经过试验后发现设置那个目录不起作用,可能是Android版本不同吧,我的是Android4.0.3,而他的可能是以前的Android版本吧。

缓冲目录使用getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath()是从附录链接2中找到的线索。

附录链接:
1.http://alex.tapmania.org/2010/11/html5-cache-android-webview.html
2.http://johncookie.iteye.com/blog/1182459
3.HTML5 Offline官方文档:http://www.w3.org/TR/html5/offline.html#manifests

Android的webview支持HTML5的离线应用功能相关推荐

  1. android webview video标签,Android WebView支持html5 video标签

    看到这个标题很兴奋了吧,但是内容肯定会让你失望...这先告诉结果了,我没在2.3上搞出什么名堂来. 起因是项目需要在android 2.3.*的版本上调用有video标签的页面,调研是否支持.百度,g ...

  2. android webview优酷,android 使用WebView 支持播放优酷视频,土豆视频

    看了很多文章和所谓的解决android WebView播放优酷,土豆等视频的办法,都是什么setPluginsEnabled,在android 4.x之后都不好使,压根就没这函数,因为android ...

  3. android 使用WebView 支持播放优酷视频,土豆视频

    看了很多文章和所谓的解决android WebView播放优酷,土豆等视频的办法,都是什么setPluginsEnabled,在android 4.x之后都不好使,压根就没这函数,因为android ...

  4. android webview单向认证,android 让webview支持自签名证书https 双向认证(SSL)

    最近完成一个项目,安全级别比较高.所以涉及到https双向认证,在网上找了很多资料都没有完美的解决方案.最后参考了org.sandrob.sslexample的实现方式,结合实际情况才完成该技术难题, ...

  5. 安卓开发之android使用webview时按后退会退出而不是回退的问题

    最近公司使用android打包html5游戏, 使用android点webview打包html5游戏,代码都好了,具体如下 public class MainActivity extends Acti ...

  6. android实现在线阅读功能,Android使用WebView实现离线阅读功能

    1.先看效果图,加载动画: 加载完成,注意当前为飞行模式! 2.使用 1).让你的javabean实现OffLineLevelItem接口,因为我的这个离线阅读支持多级下载,比如Demo中的每个频道下 ...

  7. html5 android 拍照上传,android webview使用html5 上传相册、拍照照片

    本人编程新手,这次做的功能是android webview 嵌入HTML5的页面,页面中有一个标签,iOS直接就支持,但android中不支持,网上的帖子说是因为android屏蔽了文件上传功能还是怎 ...

  8. android canvas 保存图片,ionic3 html5 video 抓图保存到手机相册,解决Android手机不支持Canvas drawImage问题...

    当然百度出上W条答案 上代码,相信下面代码和小伙伴大同吧 相信好多做webview app的小伙伴们都有同样的问题,在pc上能轻松实现video 抓图.但是在android手机大多是不支持canvas ...

  9. Android WebView 支持H5图片上传input type=file

    2019独角兽企业重金招聘Python工程师标准>>> Android WebView 缓存处理 Android WebView 支持H5图片上传<input type=&qu ...

最新文章

  1. java中treemap释放_81.Java集合之TreeMap
  2. [九省联考2018]IIIDX
  3. 活动结束|金融圈第19期分享:数据系统如何防范金融非统性风险?
  4. kafka常用命令及问题解决
  5. Java编程讲义之Eclipse开发工具
  6. jquery创建并行对象或者叫合并对象
  7. 好代码是管出来的——使用Git来管理源代码
  8. Jquery 实现原理之 Ajax
  9. Windows 平台安装 MongoDB
  10. ef 批量保存 oracle,mybatis-oracle与mysql批量添加
  11. BIND配置文件详解(二)
  12. 如何将SL的image保存到SL的独立存储文件系统
  13. 计算机网络的分类 ppt,认识计算机网络ppt
  14. APU工业控制领域应用
  15. 【C语言】游戏管理系统简单设计
  16. Hbuilder x安装教程(前端html5开发)
  17. docker安装gamit_gamit的安装步骤
  18. 光盘怎么刻录服务器系统,如何刻录系统光盘?小编手把手教你电脑Windows刻录系统光盘的方法...
  19. 计算机图形学圆反走样代码,计算机图形学——反走样
  20. 黑客急于利用微软的零日漏洞

热门文章

  1. ACL 访问控制列表
  2. systemtap examples
  3. 书摘:18个积极主动的表现方式
  4. 为什么我复制文件比你快
  5. udp user datagram protocol
  6. linux上组建和挂载磁盘阵列
  7. Java可变数组作为参数的用法
  8. python3.6安装tkinter_python3.6.4 tkinter安装
  9. 小迪安全--xss跨站脚本攻击
  10. Spark工作原理及基础概念