11

Web ビュー内でネットワークがダウンしているときに、Web サイトの HTML5 オフライン キャッシュ バージョンを表示しようとしています。

onReceivedErrorokをオーバーライドしました。ネットワークがダウンすると、このメソッドが呼び出されます。問題は、一般的な「Web ページは利用できません」というメッセージが表示されることです。

ページの HTML5 キャッシュ バージョンを表示するにはどうすればよいですか? Firefox と Chrome のデスクトップ バージョンで正常に動作するため、webapp のオフライン ストレージは確実に動作しています。

loadDataでビューを手動で呼び出すことができることはわかってonReceivedErrorいますが、HTML5 キャッシュ値をどこから取得できるかわかりません。

注:loadDataなどのダミーデータを設定しview.loadData(Uri.encode("<html><div>Page load failed</div></html>"), "text/html", "UTF-8");てからクリックバックすると(バックイベントを検出して呼び出すとwebview.goBack();、キャッシュされたバージョンのページが正常に表示されます.

WebView をセットアップするために追加したコード行を次に示します。

webview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webview.getSettings().setAppCacheMaxSize(1024*1024*8);                         
webview.getSettings().setAppCachePath("/data/data/com.stuff.android/cache");
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setAppCacheEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);
4

3 に答える 3

6

を使用してネットワークの状態を調べてみてください

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

( Android で利用可能なインターネット接続があるかどうかを検出します)

これも必要

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

AndroidManifest.xml で

ネットワーク接続が利用可能かどうかに応じて、キャッシュの動作を LOAD_CACHE_ONLY または LOAD_NO_CACHE に設定できるようになりました。

webview.getSettings().setCacheMode(...)
于 2011-12-20T10:01:19.390 に答える
1

これをブラウザに処理させるだけでは機能しませんか? 次のように、HTML タグでマニフェストを指定します。

<html manifest="mycache.appcache">

...接続が利用できない場合、ブラウザは自動的にそれを使用する必要があります。設定をまったく変更する必要はありません。

于 2011-12-20T13:52:28.633 に答える