Android的webview支持HTML5的离线应用功能详细配置

 更新时间:2012年12月13日 14:55:47   作者:  
HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用这是个非常有用的功能,但如何使Webivew支持HTML5离线应用功能呢,需要的朋友可以参考下
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);//设置缓冲大小,我设的是8M
String 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(){
//扩充缓存的容量
@Override
public 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中找到的线索。

相关文章

  • Android自定View流式布局根据文字数量换行

    Android自定View流式布局根据文字数量换行

    这篇文章主要为大家详细介绍了Android自定View流式布局,根据文字数量换行,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android实现通知栏透明的方法

    Android实现通知栏透明的方法

    这个特性是andorid4.4支持的,最少要api19才可以使用,也就是说如果Android的机子是低于4.4,沉浸通知栏是没有效果的。下面介绍一下使用的方法,非常得简单,对android通知栏透明相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Android ImageView实现图片裁剪和显示功能

    Android ImageView实现图片裁剪和显示功能

    这篇文章主要介绍了Android ImageView实现图片裁剪和显示功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Android中微信小程序开发之弹出菜单

    Android中微信小程序开发之弹出菜单

    这篇文章主要介绍了Android中微信小程序开发之弹出菜单的相关资料,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2016-12-12
  • Android开发RecyclerView单独刷新使用技巧

    Android开发RecyclerView单独刷新使用技巧

    本篇文章主要是分享下RecyclerView中子item如何单独刷新以及子item的某一部分内容如何实现单独刷新,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Android Jetpack组件Lifecycle源码解析

    Android Jetpack组件Lifecycle源码解析

    这篇文章主要为大家介绍了Android Jetpack组件Lifecycle源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android 多图上传后将图片进行九宫格展示的实例代码

    Android 多图上传后将图片进行九宫格展示的实例代码

    这篇文章主要介绍了Android 多图上传后将图片进行九宫格展示,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Android仿淘宝商品详情页

    Android仿淘宝商品详情页

    这篇文章主要为大家详细介绍了Android仿淘宝商品详情页,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android实现打地鼠小游戏

    Android实现打地鼠小游戏

    这篇文章主要为大家详细介绍了Android实现打地鼠小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 获取Android应用专属缓存存储目录的实例

    获取Android应用专属缓存存储目录的实例

    今天小编就为大家分享一篇获取Android应用专属缓存存储目录的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论