2010-09-24 32 views
14

我有一個應用程序從網站加載網址。現在我希望應用程序在脫機時使用緩存。但我只是得到失敗頁面,說我沒有連接到網站。起初,我將Cachemode設置爲Load_Normal,但這沒有幫助。接下來,我嘗試使用ConnectivityManager一個真的「傻」的方式:在Android Webview中離線時加載緩存

cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE); 
if(cm.getActiveNetworkInfo().isConnected()){ 
    mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
    mfnWebView.loadUrl(url); 
} 
else{ 
    mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    mfnWebView.loadUrl(url); 
} 

但這只是導致崩潰的應用程序。

有沒有簡單的方法來加載緩存時脫機和現有,只是如果不存在顯示失敗消息。

回答

15

好的。上面的代碼很好。需要添加的許可是:

。互聯網

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

9

除了權限

。互聯網

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

在另一個答覆中提到,我還需要進行以下更改代碼:

if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()){ 
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
} 
else{ 
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
} 

否則,應用程序將試圖讓首次啓動網絡信息時崩潰,如果我沒有連接到WiFi或移動網絡。