检查url是否缓存webview android

时间:2015-09-17 10:18:02

标签: android caching webview

我使用webview加载html页面和网址。

我只想在互联网可用或网页视图缓存网址内容时加载网址。

  

如何在不创建自己的网址的情况下检查网址是否已缓存   在某些外部路径上缓存。

-

我提到过:

WebView Cache Data Directory?

Check if file already exists in webview cache android

How to move webView cache to SD?

Android webview check if page is in cache

2 个答案:

答案 0 :(得分:0)

设置webview缓存模式LOAD_CACHE_ELSE_NETWORK。

覆盖WebViewClient方法:

@SuppressWarnings("deprecation")
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            if (view.getUrl().equals(failingUrl)){
                showInternetConnectionError();
            }
            super.onReceivedError(view, errorCode, description, failingUrl);
        }

        @TargetApi(android.os.Build.VERSION_CODES.M)
        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            onReceivedError(view, error.getErrorCode(), error.getDescription().toString(), request.getUrl().toString());
        }

如果互联网连接可用,它将从服务器加载网页,否则从缓存加载。如果网页在缓存中不可用,则会显示互联网连接错误。

答案 1 :(得分:0)

尝试覆盖onPageCommitVisible中的webviewclient。当网址未缓存且网络不可用时,将调用此回调。

@Override
public void onPageCommitVisible(WebView view, String url) {
                super.onPageCommitVisible(view, url);
                if(!isNetworkAvailable){
                    //page not cached
                }
                Timber.d("Page cannot draw")
}

检查互联网可用性

boolean isNetworkAvailable(){
      ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

      NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
      boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();
      return isConnected;

}