4

インターネットにアクセスできる場合は、インターネットから mWebviewをロードする必要があります。利用できない場合は、キャッシュからロードする必要があります。私は何かを持っていますが、それはサイトをまったくロードしません

私を助けてください?

パーミッションは既に追加されています:
- android.permission.INTERNET
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.ACCESS_NETWORK_STATE

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


@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Layout Webview
    mWebview  = new WebView(this);
    // Broadcast
    Toast.makeText(this, "Laden van roosterwijzigingen.",
    Toast.LENGTH_SHORT).show();
    // Enable JavaScript
    mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
    mWebview.setHorizontalScrollBarEnabled(false);
    mWebview.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
    mWebview.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
    mWebview.getSettings().setAllowFileAccess( true );
    mWebview.getSettings().setAppCacheEnabled( true );
    mWebview.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
    final Activity activity = this;
    // Make WebClient
    mWebview.setWebViewClient(new WebViewClient() { 
    // Trace Errors
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
    }
}); 
    if ( !isNetworkAvailable() ) { // loading offline
        mWebview.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
    }

    mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

}
4

2 に答える 2

0

私はあなたのコードをチェックしましたが、キャッシュは正常に動作します ( http://yahoo.comでテストしました)。問題はisNetworkAvailable()メソッドにある必要があるため、
setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK)は呼び出されません。

これをテストするには、最初に webbage を一度ロードした後、isNetworkAvailable()常に一時的に戻り、デバイスを機内モードにします。false

于 2013-06-23T10:20:22.883 に答える
-1
if ( !isNetworkAvailable() ) { // loading offline
    mWebview.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
style="color:red">}// move this bracket

mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
// to here  } 
}
于 2014-11-14T20:50:51.020 に答える