Узнайте, показывает ли Android WebView кэшированную страницу - PullRequest
7 голосов
/ 25 мая 2011

Я делаю приложение для Android, которое, помимо прочего, показывает веб-сайты в веб-обозрении. Насколько я понимаю, веб-просмотр автоматически показывает кэшированную версию страницы, если не удается установить соединение.

Есть ли способ узнать, была ли показанная страница получена с сервера или из кэша?

Может быть, даже сколько лет кэшированной странице.

Это должно быть в состоянии уведомить пользователя, если он / она просматривает старую информацию.

Ответы [ 2 ]

8 голосов
/ 27 июля 2011

Вы можете попробовать взломать - сначала установите режим кэширования WebView на WebSettings.NO_CACHE и загрузите URL. Затем создайте пользовательский WebChromeClient следующим образом:

final String urlToLoad = "http://www.my-url.com"; 
webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl)
    {
        if (view.getSettings().getCacheMode() == WebSettings.LOAD_NO_CACHE && urlToLoad.equals(failingUrl))
        {
            view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
            view.loadUrl(urlToLoad);
            return;
        }
        else
        if (urlToLoad.equals(failingUrl))
        {
            // cache failed as well, load a local resource as last resort
            // or inform the user
        }
        super.onReceivedError(view, errorCode, description, failingUrl);
    }
});
webview.loadUrl(urlToLoad);
0 голосов
/ 25 мая 2011

Поскольку WebView работает как браузер, ответ - нет.Есть какой-то хакерский способ обнаружить эту ситуацию.

Или альтернативным решением будет предотвращение кэширования страницы (см. Документацию WebView)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...