Загрузка кеша при автономном режиме в Android Webview

У меня есть приложение, которое загружает URL-адреса с веб-сайта. Теперь я хочу, чтобы приложение использовало кеш в автономном режиме. Но я просто получаю страницу сбоя, в которой говорится, что я не подключен к веб-сайту. Сначала я устанавливаю Cachemode Load_Normal, но это не помогает. Затем я попытался использовать "глупый" подход с помощью ConnectivityManager:

cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
if(cm.getActiveNetworkInfo().isConnected()){
  mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
  mfnWebView.loadUrl(url);
}
else{
  mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
  mfnWebView.loadUrl(url);
}

но это просто приводит к сбою приложения.

Есть ли простой способ загрузить кеш, когда он находится в автономном режиме и существует, и просто, если он не существует, показывая сообщение об ошибке.

Ответы

Ответ 1

OK. Код выше. Необходимо добавить следующие разрешения:

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

Ответ 2

В дополнение к разрешениям

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

упомянутый в другом ответе, мне также необходимы следующие изменения в коде:

if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()){
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
}
else{
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}

В противном случае приложение будет сбой при попытке получить информацию о сети при первом запуске, если я не подключен ни к WiFi, ни к мобильной сети.