WebView オンライン時はウェブサイトを読み込み、オフライン時はローカルファイルを読み込む。
2023-11-01 23:56:19
質問
私は実はJavaでのプログラミングは初めてなのですが、ここで私の問題に対するいくつかの解決策を追ってみましたが、私のケースに合うものが見つからず、コードを正しく書き留めることができないようです。
私は
WebView
を使用して、電話がオンラインのときはオンラインページ (たとえば Google) を開き、電話がオフラインのときはローカルの HTML ページを開くようにしたいです。
同時に、オフラインのローカルページが常に電話がインターネットに接続された最後の時間に更新されるように、電話がオンラインのときにローカルページを上書きするようにしたいです。
これをどのように行うかについて何かアイデアはありますか? 正しい方向へのいくつかの簡単なポインティングがあれば助かります。
どうもありがとうございます。
どのように解決するのですか?
私には単純なウェブビューのキャッシュ機構のように聞こえます。
以下は、あなたが探しているものを行う必要があります。
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()
は、アクティブなネットワーク接続をチェックします。
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
最後に、以下の3つのパーミッションの追加を忘れないでください。
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"/>
関連
-
[解決済み] Android Webviewでnet::ERR_CACHE_MISSのメッセージが表示される
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] WhatsAppでメッセージを送信する