2011-09-29 53 views
2

我正在创建一个应用程序并使用WebView打开URL。我看到一些应用程序向用户提供了“保存页面”(一个网页)选项。即使没有网络时,我如何保存WebView内容?

我想知道如何从我的WebView中保存一个页面,以便我可以在请求时将它显示给用户。

回答

2

也许使用缓存的是,你应该检查http://developer.android.com/reference/android/webkit/WebSettings.html

的最佳方式......为“管理状态设置为网页视图。当一个网页视图中创建第一 ,它获得一组默认设置,这些默认设置 将从任何getter调用中返回,从WebView.getSettings()获得的WebSettings对象获得 与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等级1 使用缓存,如果内容是存在的,即使过期(例如,历史NAV)如果不是在缓存中,从网络加载。与setCacheMode(int)一起使用。 恒值:1(00000001)

UPDATE1:

HMM例如 “所有生命的蹩脚的代码”:

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(); 
} 

所以,你可以用提取网址的InputStream获取(字符串URL )然后将该流转换为带有私有静态字符串的字符串convertStreamToString(InputStream is)并将该流保存到文件中,稍后可以将该内容加载到webview .....稍后阅读

UPDATE2:

或者你可以做一些Java序列东西......不记得,如果在Android上的xD这项工作

Discover the secrets of the Java Serialization APIhttp://java.sun.com/developer/technicalArticles/Programming/serialization/

+0

但是,这是网页视图缓存。这不会像我们在PC上那样行事。我们在SDCard上保存页面的位置。像“WikiDroid”提供“保存页面”并将其保存到SDcard。 – Arslan

+0

如果你想保存在SD卡上的页面,那么你可以获取URL文本,并将其写入SD卡 – yeradis

+0

写入内容到SD卡上的文件看起来是非常好的想法。让我试试...谢谢 – Arslan