Android的webview支援HTML5的離線應用功能詳細配置

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.