我使用webview加载html页面和网址。
我只想在互联网可用或网页视图缓存网址内容时加载网址。
如何在不创建自己的网址的情况下检查网址是否已缓存 在某些外部路径上缓存。
-
我提到过:
Check if file already exists in webview cache android
答案 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;
}