#android #caching #webview
#Android #кэширование #webview
Вопрос:
Я пытаюсь загрузить кэшированную версию веб-сайта, когда мобильный интернет отключен. Но я получаю только белый экран.
Вот мой код.
binding.webView.getSettings().setJavaScriptEnabled(true);
binding.webView.getSettings().setDomStorageEnabled(true);
binding.webView.getSettings().setAppCacheEnabled(true);
binding.webView.getSettings().setAllowFileAccess(true);
binding.webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
binding.webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
if (!isNetworkAvailable()) {
binding.webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
}
binding.webView.setWebChromeClient(new WebChromeClient());
binding.webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
binding.progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
binding.progressBar.setVisibility(View.GONE);
binding.webView.setVisibility(View.VISIBLE);
}
});
binding.webView.loadUrl("website url here");
Ответ №1:
Попробуйте изменить эту строку:
binding.webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
Для:
binding.webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
Комментарии:
1. Он не работает. Та же проблема, белый экран, когда Интернет выключен.
2. Поставьте точку останова в строке
getApplicationContext().getCacheDir().getAbsolutePath()
и убедитесь, что она не возвращает значение null