Как я могу сохранить содержимое WebView, чтобы показать, даже когда нет доступной сети? - PullRequest
2 голосов
/ 29 сентября 2011

Я создаю приложение и использую WebView для открытого URL.Я вижу, что некоторые приложения предлагают пользователю опцию «Сохранить страницу» (веб-страницу).

Я хочу знать, как сохранить страницу из моего WebView, чтобы я мог показать ее пользователю при запросе.

1 Ответ

2 голосов
/ 29 сентября 2011

Возможно, использование кеша - лучший способ ... для этого вам следует проверить http://developer.android.com/reference/android/webkit/WebSettings.html

"Управление состоянием настроек для WebView. Когда WebView создается впервые, он получает наборнастроек по умолчанию. Эти настройки по умолчанию будут возвращены из любого вызова получателя. Объект WebSettings, полученный из WebView.getSettings (), привязан к жизни WebView. Если WebView был уничтожен, любой вызов метода в WebSettings вызовет исключение IllegalStateException. "

В частности:

public static final int **LOAD_CACHE_ONLY**

Поскольку: Уровень API 1 Не использовать сеть, загружать только из кэша.Используйте с setCacheMode (int).Постоянное значение: 3 (0x00000003)

Или

public static final int **LOAD_CACHE_ELSE_NETWORK**

С: Уровень API 1 Используйте кэш, если контент есть, даже если срок его действия истек (например, навигация по истории), если он отсутствует вкеш, загрузка из сети.Используйте с setCacheMode (int).Постоянное значение: 1 (0x00000001)

Update1:

хмм "дерьмовый код всей жизни", например:

public static InputStream fetch(String url) throws MalformedURLException,
        IOException {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet(url);
    HttpResponse response = httpClient.execute(request);
    return response.getEntity().getContent();
}


private static String convertStreamToString(InputStream is)
        throws IOException {

    StringWriter writer = new StringWriter();
    IOUtils.copy(is, writer, "UTF-8");
    return writer.toString();
}

Итак, вы можете получить URL с помощью InputStream fetch (String url) затем преобразовать этот поток в String с частной статической строкой convertStreamToString (InputStream is) и сохранить этот поток в файл, позже вы можете загрузить этот контент в веб-просмотр..... читать позже

Update2:

Или вы можете сделать некоторые вещи сериализации Java ... не помню, если это работает на Android XD

Откройте для себя секреты Java Serialization API http://java.sun.com/developer/technicalArticles/Programming/serialization/

...