Trong WebView của tôi, tôi có nhiều liên kết trong tiêu đề. Ở chế độ Offline, tôi không được phép tải lại trang và giữ trang đó như hiện tại và sau đó, thông báo cho người dùng về kết nối internet. Tôi có thể bắt các liên kết trước khi tải bằng cách sử dụng shouldOverrideUrlLoading
nếu tôi nhấp vào các liên kết khác. Nhưng nếu tôi nhấp vào liên kết tương tự, shouldOverrideUrlLoading
sẽ không được kích hoạt, thay vào đó, phương thức onLoadResource
sẽ được gọi trước tiên. Trong phương pháp đó tôi đã thử webView.stopLoading();
nhưng nó vẫn tiếp tục hoạt động và bắn onReceivedError
phương pháp và hiển thị báo cáo lỗi trên trang.dừng tải trong webViewClient
Đây là WebClient của tôi:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(MyApplication.getInstance().isOnline()) {
return false;
}
Toast.makeText(getApplicationContext(), "Please check Internet connection and try again.", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i("ON_PAGE_START", "RUNNING ============>" + url);
if (MyApplication.getInstance().isOnline()) {
super.onPageStarted(view, url, favicon);
} else {
webView.stopLoading();
}
}
@Override
public void onLoadResource(WebView view, String url) {
if (MyApplication.getInstance().isOnline()) {
super.onLoadResource(view, url);
} else {
webView.stopLoading();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
view.stopLoading();
Toast.makeText(getApplicationContext(), "Please check Internet connection and try again.", Toast.LENGTH_SHORT).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
Những gì tôi muốn là để có thể để đảm bảo rằng các url không bị sa thải nếu nó là ẩn và thông báo về điều đó.
Cảm ơn bạn cho câu trả lời tuyệt vời. Vâng, đối với ** 1 **, như bạn có thể thấy trong mã của tôi ở trên, tôi đã ghi đè lên 'onPageStarted' và thử' stopLoading() 'không thành công. ** 2 **, tôi thực sự nghĩ về điều đó, nhưng trong trường hợp của tôi nó có thể là _dangerous_ dựa vào '' từ khi máy chủ có thể thay đổi cấu trúc của trang. Nhưng ** ** thực sự quyến rũ tôi. Làm thế nào nó không đến với tâm trí của tôi, tôi không biết :). Tôi sẽ thử nó vào tuần tới, và cho bạn biết, và có thể đánh dấu câu trả lời là chấp nhận. – boburShox
Xin chào, tôi nghĩ rằng tôi không thể tắt sự kiện cảm ứng, bởi vì tôi phải cache một trong các trang và tải trong chế độ ngoại tuyến. Nếu tôi tắt các sự kiện chạm, thì tôi sẽ không thể tải sự kiện đó hoặc điều gì? Chúng tôi đã đưa ra một ý tưởng cụ thể mà không phải là rất tốt, nhưng phù hợp với nhu cầu của chúng tôi cho thời điểm này. Cảm ơn một lần nữa – boburShox
@boburShox: Vui lòng chia sẻ ý tưởng – LokiDroid