Android的webview支持HTML5的離線應(yīng)用功能詳細(xì)配置
更新時(shí)間:2012年12月13日 14:55:47 作者:
HTML5的離線應(yīng)用功能可以使得WebApp即使在網(wǎng)絡(luò)斷開的情況下仍能正常使用這是個(gè)非常有用的功能,但如何使Webivew支持HTML5離線應(yīng)用功能呢,需要的朋友可以參考下
HTML5的離線應(yīng)用功能可以使得WebApp即使在網(wǎng)絡(luò)斷開的情況下仍能正常使用,這是個(gè)非常有用的功能。近來工作中也要用到HTML5離線應(yīng)用功能,由于是在Android平臺(tái)上做,所以自然而然的選擇Webview來解析網(wǎng)頁。但如何使Webivew支持HTML5離線應(yīng)用功能呢,經(jīng)過反復(fù)摸索和上網(wǎng)查找資料,反復(fù)做試驗(yàn)終于成功了。
首先需配置webview的的一些屬性,假設(shè)activity中已經(jīng)有了一個(gè)Webview的實(shí)例對(duì)象,名為m_webview,然后增加以下代碼:
WebSettings webseting = m_webview.getSettings();
webseting.setDomStorageEnabled(true);
webseting.setAppCacheMaxSize(1024*1024*8);//設(shè)置緩沖大小,我設(shè)的是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可以設(shè)置一個(gè)WebChromeClient對(duì)象,在其onReachedMaxAppCacheSize函數(shù)對(duì)擴(kuò)充緩沖做出響應(yīng)。代碼如下
m_webview.setWebChromeClient(m_chromeClient);
private WebChromeClient m_chromeClient = new WebChromeClient(){
//擴(kuò)充緩存的容量
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded,
long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(spaceNeeded * 2);
}
};
其次要修改http服務(wù)器中的配置,使其支持text/cache-manifest,我使用的是apache服務(wù)器,是windows版本的,在apache的conf文件夾中找到mime.types文件,打開后在文件的最后加上
“text/cache-manifest mf manifest”,重啟服務(wù)器即可。這一步很重要,我就是因?yàn)榉?wù)器端沒有配置這個(gè),所以失敗了好多次,最后是在附錄鏈接1的回復(fù)中找到的線索。
經(jīng)過以上設(shè)置Webview就可以支持HTML5的離線應(yīng)用了。
附錄鏈接1中說緩沖目錄應(yīng)該是getApplicationContext().getCacheDir().getAbsolutePath();但我經(jīng)過試驗(yàn)后發(fā)現(xiàn)設(shè)置那個(gè)目錄不起作用,可能是Android版本不同吧,我的是Android4.0.3,而他的可能是以前的Android版本吧。
緩沖目錄使用getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath()是從附錄鏈接2中找到的線索。
首先需配置webview的的一些屬性,假設(shè)activity中已經(jīng)有了一個(gè)Webview的實(shí)例對(duì)象,名為m_webview,然后增加以下代碼:
復(fù)制代碼 代碼如下:
WebSettings webseting = m_webview.getSettings();
webseting.setDomStorageEnabled(true);
webseting.setAppCacheMaxSize(1024*1024*8);//設(shè)置緩沖大小,我設(shè)的是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可以設(shè)置一個(gè)WebChromeClient對(duì)象,在其onReachedMaxAppCacheSize函數(shù)對(duì)擴(kuò)充緩沖做出響應(yīng)。代碼如下
復(fù)制代碼 代碼如下:
m_webview.setWebChromeClient(m_chromeClient);
private WebChromeClient m_chromeClient = new WebChromeClient(){
//擴(kuò)充緩存的容量
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded,
long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(spaceNeeded * 2);
}
};
其次要修改http服務(wù)器中的配置,使其支持text/cache-manifest,我使用的是apache服務(wù)器,是windows版本的,在apache的conf文件夾中找到mime.types文件,打開后在文件的最后加上
“text/cache-manifest mf manifest”,重啟服務(wù)器即可。這一步很重要,我就是因?yàn)榉?wù)器端沒有配置這個(gè),所以失敗了好多次,最后是在附錄鏈接1的回復(fù)中找到的線索。
經(jīng)過以上設(shè)置Webview就可以支持HTML5的離線應(yīng)用了。
附錄鏈接1中說緩沖目錄應(yīng)該是getApplicationContext().getCacheDir().getAbsolutePath();但我經(jīng)過試驗(yàn)后發(fā)現(xiàn)設(shè)置那個(gè)目錄不起作用,可能是Android版本不同吧,我的是Android4.0.3,而他的可能是以前的Android版本吧。
緩沖目錄使用getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath()是從附錄鏈接2中找到的線索。
相關(guān)文章
Kotlin使用滾動(dòng)控件RecyclerView實(shí)例教程
RecyclerView是Android一個(gè)更強(qiáng)大的控件,其不僅可以實(shí)現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實(shí)現(xiàn)數(shù)據(jù)縱向滾動(dòng),也可以實(shí)現(xiàn)橫向滾動(dòng)(ListView做不到橫向滾動(dòng))。接下來講解RecyclerView的用法2022-12-12Android嵌套R(shí)ecyclerView左右滑動(dòng)替代自定義view
這篇文章主要介紹了Android嵌套R(shí)ecyclerView左右滑動(dòng)替代自定義view,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06Android基于名稱、修改時(shí)間、大小實(shí)現(xiàn)文件夾排序
這篇文章主要為大家詳細(xì)介紹了Android基于名稱、修改時(shí)間、大小實(shí)現(xiàn)文件夾排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09Android 三種動(dòng)畫詳解及簡單實(shí)例
這篇文章主要介紹了Android 三種動(dòng)畫詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04Android下拉刷新控件SwipeRefreshLayout源碼解析
這篇文章主要為大家詳細(xì)解析Android下拉刷新控件SwipeRefreshLayout源碼,感興趣的小伙伴們可以參考一下2016-07-07Android 異步任務(wù) 設(shè)置 超時(shí)使用handler更新通知功能
這篇文章主要介紹了Android 異步任務(wù) 設(shè)置 超時(shí)使用handler更新通知,文中給大家提到了使用AsyncTask設(shè)置請(qǐng)求超時(shí)的注意事項(xiàng) ,需要的朋友可以參考下2017-12-12Android 顯示和隱藏輸入法實(shí)現(xiàn)代碼
本文所要介紹的這個(gè)方法可以轉(zhuǎn)換軟件輸入法在窗體中的顯示狀態(tài),具體實(shí)現(xiàn)代碼如下,感興趣的你可以參考下哈,希望可以幫助到你2013-03-03