从缓存加载网页视图

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");

}
2个回答

0

我已经检查了你的代码,缓存正常工作(使用http://yahoo.com进行测试)。你的问题必须在isNetworkAvailable()方法中,因此没有调用setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK)

为了测试这个问题,暂时让isNetworkAvailable()始终返回false,并在第一次加载网页后将设备设置为飞行模式。


这是不可能的,因为它根本就没有加载。即使我有WiFi连接。 - user2420234

-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  } 
}

1
你的问题格式有严重问题,很难阅读。你可以编辑它以使用代码格式。解释总是有帮助的! :) - Jeff B
4
尽管这段代码片段可以解决问题,但是包括解释可以真正帮助提高您的帖子质量。请记住,您正在为将来的读者回答问题,这些人可能不知道您代码建议的原因。 - gunr2171

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接