Загрузка кэша в автономном режиме в Android Webview - PullRequest
15 голосов
/ 24 сентября 2010

У меня есть приложение, которое загружает 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);
}

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

Существует ли простой способ загрузки кэша в автономном и существующеми просто если не существует, показывая сообщение об ошибке.

Ответы [ 2 ]

15 голосов
/ 06 октября 2011

OK. Код в порядке выше. Разрешение необходимо добавить:

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

9 голосов
/ 17 февраля 2012

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

.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, ни к мобильной сети.

...