これは私にとってシンプルなwebviewキャッシング機構のようです。
以下は、あなたが探しているものを行う必要があります、最後に
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
次の三つの権限を追加することを忘れないでください:
WebView webView = new WebView(context);
webView.getSettings().setAppCacheMaxSize(5 * 1024 * 1024); // 5MB
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // load online by default
if (!isNetworkAvailable()) { // loading offline
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
webView.loadUrl("http://www.google.com");
方法アクティブなネットワーク接続のためのisNetworkAvailable()
チェック〜にあなたのAndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
これは本当に完璧です..魅力のように動作します!私にキャッシュモードを表示するためにたくさんありがとうございます – mstation
心配しないで、喜んで助けました:) – jenzz
@ jenzz:私はあなたの解決策に2つの問題があります。まず、私のケースでは、キャッシュディレクトリ(外部のSDカード)に表示されるのはすべて、 "ApplicationCache.db"と呼ばれる*空のファイルです。より大きくてはいけませんか?他の場所にキャッシュが格納されている可能性がありますか?次に、 '.setAppCacheMaxSize()'はAPI18では廃止されましたが、もっと多くのchacheを追加する方法は不明です。 –