android中怎么使用html5离线功能

android中怎么使用html5离线功能,第1张

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中找到的线索。

可以,方法我想是以保存网页的形式(这里跟flash不一样,flash可以跑在flash播放器上,而html5的游戏是用js编写,一般都是跑着浏览器上),单机游戏可以离线玩离线的话直接打开你保存的网页,注意保存网页的时候是否将游戏的js文件、css文件、图片等资源文件都保存下来了,不能像flash一样打包,所以我觉得现在对于html5游戏来说没有flash方便

在博客中只要能插入html5游戏的 html代码、js代码、以及引用的相关图片应该就可以了

所有的名单文件被分为三个部分:“explicit”段,“fallback” 段,和“online

whitelist”段。每个部分有一个标头,单独占一行。如果名单文件不含有任何段落标头,所有列出的资源默认为“explicit”段。尽量不要细想这些术语,以免你崩溃。

这儿是一个有效的名单文件。它列出了三个资源:一个CSS文件,一个JavaScript文件,和一个JPEG图片。

CACHE MANIFEST

/clock.css

/clock.js

/clock-face.jpg

此缓存名单文件没有任何段落头,所以所有列出的资源默认为“explicit”段。在“explicit”段中的资源将会被下载并在本地缓存,且会在你没有网络连接时用于代替它们的在线副本。因此,在下载此名单列表的同时,你的浏览器将会从你网络服务器的根目录下载clock.css,clock.js和clock-face.jpg。然后你可以拔掉你的网线并刷新页面,所有这些资源可以在离线时有效。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6184667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存