广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-04-04 08:35:37 次阅读 稿源:互联网
    广告
    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中找到的线索。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告