2011-09-29 45 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

相關問題