2010-09-24 44 views
14

Tôi có một ứng dụng tải url từ một trang web. Bây giờ tôi muốn ứng dụng sử dụng bộ nhớ cache khi ngoại tuyến. Nhưng tôi chỉ nhận được trang thất bại mà nói rằng im không kết nối với trang web. Lúc đầu, tôi đặt Cachemode thành Load_Normal nhưng điều này không hiệu quả. Tiếp theo, tôi đã thử phương pháp "ngớ ngẩn" thực sự bằng cách sử dụng ConnectivityManager:Tải bộ nhớ cache khi ngoại tuyến trong 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); 
} 

nhưng điều này chỉ dẫn đến việc treo ứng dụng.

Có cách đơn giản để tải bộ nhớ cache khi ngoại tuyến và hiện tại và chỉ khi không có thông báo lỗi hiện tại.

Trả lời

15

OK. Mã này là tốt hơn ở trên. Việc cho phép cần thiết để được thêm vào là:

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

9

Ngoài các điều khoản

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

đề cập trong câu trả lời khác, tôi cũng cần những thay đổi sau vào mã:

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

Nếu không ứng dụng sẽ sụp đổ khi cố gắng để có được các thông tin mạng khi khởi động đầu tiên, nếu tôi không được kết nối cho WiFi hoặc Mạng di động.

Các vấn đề liên quan