首页 > 代码库 > 我的项目10:Android的webview支持HTML5的离线应用功能详细配置

我的项目10:Android的webview支持HTML5的离线应用功能详细配置

        因为需要,我要在andriod手机上用webview给我的HTML5项目加一个壳,但第一次将项目封装进andriod里面时,我测试输出的alert尽然是不支持HTML5 web缓存,这让我很郁闷,在网上找了了一些资料看了一下,测试了几次终于通了,因为我不是搞andriod的,所以就不详细介绍了,把代码分享给大家:

MainActivity.java类:

package com.example.test; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebStorage; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
public class MainActivity extends Activity { 
WebView webview; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    webview = (WebView) findViewById(R.id.webView1); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.setWebViewClient(new HelloWebViewClient()); 
    webview.loadUrl("file:///android_asset/indexfuza.html"); 
    WebSettings settings = webview.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setDatabaseEnabled(true); 
    String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); 
    settings.setDatabasePath(databasePath);    
    WebSettings webseting = 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.setWebChromeClient(new WebChromeClient() { 
    public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
            quotaUpdater.updateQuota(5 * 1024 * 1024); 
        } 
    }); 
} 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
        webview.goBack(); 
        return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
private class HelloWebViewClient extends WebViewClient { 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url); 
        return true; 
    } 
}
} 
layout里面的activity_main.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
</RelativeLayout>
其他的地方我也没动,就这样就支持HTML5 web存储啦。。。。。。。。


我的项目10:Android的webview支持HTML5的离线应用功能详细配置