android中怎么使用html5离线功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中怎么使用html5离线功能相关的知识,希望对你有一定的参考价值。
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中找到的线索。 参考技术A 其实就是通过android的webview加载一个本地的HTML界面,这就算是所谓的离线功能,或者叫缓存数据。
实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET" />
第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>
Swagger离线文档生成
参考技术A 离线接口文档自动生成器适用范围:
将标准的swagger.json文件解析并转换成一定格式的接口文档,其中文档的章节排序可以在index.adoc中自定义排序。生成的接口文档有html和pdf格式两种,由于插件转换中文需要特殊配置,默认生成的含中文的文档存在一定字体错乱,所以建议使用html格式文档。Html格式文档可以使用word打开,并转换成其他格式。
操作步骤:
1. [endif]将ConvertSwagger.rar解压出来
2. [endif][可选步骤]修改\ConvertSwagger\src\docs\asciidoc文件夹下面的index.adoc与manual_content.adoc,manual_content.adoc。index.adoc中可以将manual_content.adoc添加进去:
并在manual_content.adoc中添加自定义描述内容:
(可选)
3. [endif]在\ConvertSwagger\target\swagger中添加swagger.json文件
4. [endif]编译此工程 在ConvertSwagger目录中 mvn package
5. [endif]在\ConvertSwagger\target\asciidoc\html中拿到html格式的接口文档,自动生成的文档名称默认是index.html。
以上是关于android中怎么使用html5离线功能的主要内容,如果未能解决你的问题,请参考以下文章
Google Analytics 可以跟踪离线 HTML5 应用程序中的交互吗?
2011年开发适用于iOS/Android的HTML5离线存储解决方案