Как я могу сохранить содержимое WebView, чтобы показать, даже когда нет доступной сети?
Я создаю приложение и использую WebView для открытого URL. Я вижу, что некоторые приложения предлагают пользователю опцию "Сохранить страницу"(веб-страницу).
Я хочу знать, как сохранить страницу из моего WebView, чтобы я мог показать ее пользователю при запросе.
1 ответ
Возможно, использование кеша - лучший способ... для этого вы должны проверить http://developer.android.com/reference/android/webkit/WebSettings.html
"Управляет состоянием настроек для WebView. Когда WebView создается впервые, он получает набор настроек по умолчанию. Эти настройки по умолчанию будут возвращены при любом вызове геттера. Объект WebSettings, полученный из WebView.getSettings(), привязан к жизни WebView. Если WebView был разрушен, любой вызов метода в WebSettings вызовет исключение IllegalStateException. "
Especifically:
public static final int **LOAD_CACHE_ONLY**
Поскольку: Уровень API 1 Не используйте сеть, загружайте только из кэша. Используйте с setCacheMode(int). Постоянное значение: 3 (0x00000003)
Или же
public static final int **LOAD_CACHE_ELSE_NETWORK**
С тех пор: API Level 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 с частной статической String convertStreamToString (InputStream is) и сохранить этот поток в файл, позже вы можете загрузить этот контент в веб-просмотр..... читать позже
Update2:
Или вы можете сделать некоторые вещи сериализации Java... не помню, если это работает на Android XD
Откройте для себя секреты Java Serialization API http://java.sun.com/developer/technicalArticles/Programming/serialization/