Android WebView не загружает кэшированный веб-сайт при отключенном Интернете

#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