остановить загрузку в webViewClient
в моем WebView у меня есть несколько ссылок в заголовке. В автономном режиме я не должен разрешать перезагрузить страницу и сохранить эту страницу как есть, а затем сообщить пользователям о подключении к интернету. Я могу поймать ссылки, прежде чем он загружается с помощью shouldOverrideUrlLoading
если я нажимаю на другие ссылки. Но если я нажму на ту же ссылку,shouldOverrideUrlLoading
не увольняется, вместо этого,onLoadResource
метод вызывается первым. В этом методе я пробовал webView.stopLoading();
но он продолжает работать и огня onReceivedError
метод и показывает отчет об ошибке на странице.
вот мой WebClient:
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);
}
});
что я хочу, чтобы иметь возможность убедиться, что URL-адреса не запускаются, если он находится в автономном режиме и сообщить об этом.
3 ответов
Это известная проблема, и для нее есть ошибка. http://code.google.com/p/android/issues/detail?id=2887
был предложен ряд обходных путей. например,
- переопределить onPageStarted
- Добавить JavascriptInterface по CommonsWare
- отключить события касания WebView
кроме того, зарегистрируйте BroadcastReceiver для прослушивания сети состояние изменяется и применяется обходной путь при потере подключения. прослушиватель сети Android
Я знаю, это довольно старый пост, но спасибо за этот пост, это помогло мне решить проблему!!!
У меня была аналогичная проблема и stopLoading решить мою проблему :)
shouldOverrideUrlLoading вызывается, если он переходит на новую страницу или если есть перенаправление, но не иначе, как для ex, нажав на iframe и т. д. Я хотел добиться аналогичного поведения в своем приложении, и я понял, что onPageStarted называется, но не shouldOverrideUrlLoading.
Я не переопределить onLoadResource но просто onPageStarted с onLoadResource вызывается после onPageStarted. OnPageStarted проверяет, отключен ли он и не загружается в этом случае. надеюсь, это кому-то поможет.
Я думаю в onLoadRessource(..) и onPageStarted () это дальше должно быть
view.stopLoading();
в вашем else{..}