私は実際にはJava 。
電話がオンラインのときにオンラインページ(Googleなど)を開き、電話がオフラインのときにローカルHTMLページを開くWebView
が必要です。
同時に、携帯電話がオンラインのときにローカルページを上書きして、携帯電話がインターネットに最後に接続されたときにオフラインのローカルページが常に更新されるようにします。
これをどのように行うかについてのアイデアはありますか?正しい方向を指す簡単な指示が役立つ場合があります。
どうもありがとう。
それは、私にとって単純なWebViewキャッシュメカニズムのように思えます。
以下はあなたが探していることをするはずです:
_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"/>
_
webViewをネイティブにキャッシュできない場合があります。ページヘッダーに次のフィールドが含まれている場合、WebViewはそのページのコンテンツをキャッシュできません。 Cache-Control:no-store、no-cacheプラグマ:no-cache
この場合、サーバーのページプロパティを変更して、キャッシュの問題を解決する必要があります。
私はこれが古い投稿であることを知っていますが、私がやろうとしていることにはちょっと似ています。
ホームオートメーションを制御するWebビューがあります。現時点では、メタ更新を使用して、ページは5分ごとに更新されます。
問題は、モバイル信号がないときにエラーページが表示されるだけなので、アプリを終了して再度開く必要があることです。
これは、1つのこととは別に機能するように見えます。キャッシュされたバージョンのページを使用し、電話がオフラインのときにボタンを押して加熱温度を上げると、どうなりますか?オンラインになってから送信するまで、アクションを保持しますか?それとも、それはすべて同期していないでしょうか?
後者の場合、これを克服する方法はありますか?