Ответ 1
OK. Код выше. Необходимо добавить следующие разрешения:
.INTERNET
.ACCESS_NETWORK_STATE
.ACCESS_WIFI_STATE
У меня есть приложение, которое загружает 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);
}
но это просто приводит к сбою приложения.
Есть ли простой способ загрузить кеш, когда он находится в автономном режиме и существует, и просто, если он не существует, показывая сообщение об ошибке.
OK. Код выше. Необходимо добавить следующие разрешения:
.INTERNET
.ACCESS_NETWORK_STATE
.ACCESS_WIFI_STATE
В дополнение к разрешениям
.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, ни к мобильной сети.