Tôi đã làm việc trên một ứng dụng lưu trữ hình ảnh từ web và hiển thị nó ngay cả khi người dùng đang ngoại tuyến. Điều này làm việc khá tốt cho đến khi Android 4.4 xuất hiện. Bây giờ, tất cả những gì tôi thấy là lỗi "Không thể tải trang web". Tôi cho rằng nó có thể phải làm một cái gì đó với thực tế là Kitkat sử dụng Chromium để tải các bản xem trước web, nhưng tôi không chắc lắm. Mọi bản sửa lỗi cho điều này?Bộ nhớ cache WebView không hoạt động trong Android 4.4
Đây là mã của tôi:
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
mWebView.setWebViewClient(new MyWebViewClient());
mWebViewSettings = mWebView.getSettings();
mWebViewSettings.setJavaScriptEnabled(true);
mWebViewSettings.setAllowFileAccess(true);
mWebViewSettings.setAppCacheEnabled(true);
if (Build.VERSION.SDK_INT < 18)
mWebViewSettings.setAppCacheMaxSize(5 * 1024 * 1024); // 5MB
mWebViewSettings.setLoadsImagesAutomatically(true);
mWebViewSettings.setAppCachePath(getActivity().getApplicationContext()
.getCacheDir().getAbsolutePath());
mWebViewSettings.setBuiltInZoomControls(true);
if(Build.VERSION.SDK_INT<=18)
mWebViewSettings.setDefaultZoom((WebSettings.ZoomDensity.FAR));
mWebViewSettings.setUseWideViewPort(true);
mWebViewSettings.setLoadWithOverviewMode(true);
Tôi tải nó bằng cách sử dụng đoạn mã sau:
if (NetworkUtil.IS_ONLINE_WITH_DATA_CONNECTION) {
MyPrefs = getActivity().getSharedPreferences(
"AHSelectionPreffs",
Context.MODE_PRIVATE);
Date CAMPUS_MAP_LAST_UPDATE_DATE = new Date();
String CAMPUS_MAP_LAST_UPDATE_DATE_STRING = MyPrefs
.getString("CAMPUS_MAP" + String.valueOf(StorageHelper.ID), null);
SimpleDateFormat simpleDateFormatter = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
if (CAMPUS_MAP_LAST_UPDATE_DATE_STRING != null) {
try {
CAMPUS_MAP_LAST_UPDATE_DATE = simpleDateFormatter
.parse(CAMPUS_MAP_LAST_UPDATE_DATE_STRING);
} catch (ParseException e1) {
e1.printStackTrace();
System.out.println("Cant format date!!!!");
}
int n = (int) ((curDate.getTime() - CAMPUS_MAP_LAST_UPDATE_DATE
.getTime())/(1000 * 60 * 60));
if (n < 24 * UPDATE_DURATION_IN_DAYS) {
mWebView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
} else {
updateCampusMapData();
}
} else {
updateCampusMapData();
}
} else {
mWebView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
if (StorageHelper.campus_map_link.Mobile_Link_URL != null) {
mWebView.loadUrl(StorageHelper.campus_map_link.Mobile_Link_URL);
}
private void updateCampusMapData() {
mWebView.getSettings().setCacheMode(
WebSettings.LOAD_NO_CACHE);
MyPrefs = getActivity().getSharedPreferences(
"AHSelectionPreffs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = MyPrefs.edit();
editor.putString("CAMPUS_MAP" + String.valueOf(StorageHelper.ID),
curDate.toString());
editor.commit();
}
Bạn luôn thấy lỗi (trong trường hợp nào - bạn đang cố gắng tải gì?) Hoặc bạn chỉ nhìn thấy nó ở chế độ ngoại tuyến? Ngoài ra - không liên quan, nhưng tại sao bạn lại đặt loại lớp thành phần mềm? Điều đó thường dẫn đến tình trạng lộn xộn. –
Lỗi xảy ra chỉ khi kết nối internet bị tắt. Và cảm ơn lời khuyên, sẽ cố gắng và thấy sự khác biệt. – rahulritesh
Hãy xem các thay đổi cho Android 4.4 http://developer.android.com/about/versions/android-4.4.html#Behaviors –