Android的webview支持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中找到的线索。

时间: 2024-08-01 10:25:48

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

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

HTML5的离线应用功能可以使得WebApp即使在网络断开的情况下仍能正常使用,这是个非常有用的功能.近来工作中也要用到HTML5离线应用功能,由于是在Android平台上做,所以自然而然的选择Webview来解析网页.但如何使Webivew支持HTML5离线应用功能呢,经过反复摸索和上网查找资料,反复做试验终于成功了. 首先需配置webview的的一些属性,假设activity中已经有了一个Webview的实例对象,名为m_webview,然后增加以下代码: 复制代码 代码如下: WebSet

Android编程使WebView支持HTML5 Video全屏播放的解决方法_Android

本文实例讲述了Android编程使WebView支持HTML5 Video全屏播放的解决方法.分享给大家供大家参考,具体如下: 1)需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做,具体如下: a. 如果要声明整个应用都要加速: 复制代码 代码如下: <application ... android:hardwareAccelerated ="tr

Android编程使WebView支持HTML5 Video全屏播放的解决方法

本文实例讲述了Android编程使WebView支持HTML5 Video全屏播放的解决方法.分享给大家供大家参考,具体如下: 1)需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做,具体如下: a. 如果要声明整个应用都要加速: 复制代码 代码如下:<application ... android:hardwareAccelerated ="tru

Android实现短信验证码获取自动填写功能(详细版)_Android

现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限:  <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ

Android实现短信验证码获取自动填写功能(详细版)

现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ_

Opera Android将支持HTML5和Flash功能

12月7日消息,据国外媒体报道,Opera带来了一些令人兴奋的消息,他即将推出的Opera Android移动浏览器将会支持HTML5和Adobe Flash功能. 该消息来自Opera公司的开发人员Pavel Studeny的Opera Mobile博客.Pavel Studeny写到,Opera Mobile已经拥有了所有的浏览器功能,但是Android版本也将支持HTML5和Adobe Flash功能,这主要是为了改善用户上网是的舒适程度而进行的改进. Android 版本Opera Mo

webview-华为EMUI4.0 Android的WebView设置setJavaScriptEnabled无效

问题描述 华为EMUI4.0 Android的WebView设置setJavaScriptEnabled无效 本人在使用HTML5开发过程中遇到这样一个问题,我将html和js文件放到Android的assets下,在Activity中使用webview来加载html,但是我加上webview.getSettings().setJavaScriptEnabled(true)这句话的话,在华为EMUI4.0系统下,会出现一直显示加载的情况.望各位大神指教 解决方案 打开网页时不调用系统浏览器, 而

css3-关于android的webview。

问题描述 关于android的webview. 5C webview无法兼容自定义的字体,在css里src: url('file:///android-asset/font/fangzhenglanting.ttf');设了这个不行啊?还有就是webkit的高斯模糊也做不出来,明明在电脑上都行,到了自己编的webview上就不行了?设备上开chrome字体和模糊都没问题! 解决方案 android的webview只支持html5部分功能,不信可以度娘

基于android4.4以下与4.4及以上的webview对于html5兼容性问题

问题描述 基于android4.4以下与4.4及以上的webview对于html5兼容性问题 在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit内核,而在Android 4.4及其以上Google 采用了chromium作为系统WebView的底层内核支持,我现在做的一个app是就是使用webview调用了一个html5的网址,但发现有些地方是不兼容的,比如说一个登录页面在输入用户名称或者密码的时候弹出键盘,然后在滑动屏幕的时候上方就会有空白区域出现 帮忙分