Android的webview支持HTML5的离线应用功能
2012-09-03 10:35
651 查看
HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能。近来工作中也要用到HTML5离线应用功能,由于是在Android平台上做,所以自然而然的选择Webview来解析网页。但如何使Webivew支持HTML5离线应用功能呢,经过反复摸索和上网查找资料,反复做试验终于成功了。
首先需配置webview的的一些属性,假设activity中已经有了一个Webview的实例对象,名为m_webview,然后增加以下代码:
其次要修改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
首先需配置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中找到的线索。
附录链接:
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
相关文章推荐
- 我的项目10:Android的webview支持HTML5的离线应用功能详细配置
- Android的webview支持HTML5的离线应用功能详细配置
- Webview支持HTML5的离线应用
- iOS 混合应用的关键点分析 - 仿 Android 平台 WebView 可注入本地对象方法的功能实现要点
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android通过WebView选择文件上传(支持直接调起相机等应用)
- android中webview显示网页、进度条显示进度、上一页、下一页、支持放大缩小、返回按钮2秒两次点击退出应用
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android WebView实现离线加载功能
- Android编程使WebView支持HTML5 Video全屏播放的解决方法
- 让Android的webview支持H5的图片上传,无需原生开发功能
- 使Android 自带SDK 完美支持HTML5 之 html5webview
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能 解决
- Android webView 缓存 Cache + HTML5离线功能