Прекратить загрузку в webViewClient

В моем WebView у меня есть несколько ссылок в заголовке. В автономном режиме я не могу разрешить перезагрузку страницы и сохранить эту страницу как есть, а затем информировать пользователей о подключении к Интернету. Я могу поймать ссылки, прежде чем shouldOverrideUrlLoading используя shouldOverrideUrlLoading если я shouldOverrideUrlLoading другие ссылки. Но если я shouldOverrideUrlLoading одну и ту же ссылку, shouldOverrideUrlLoading не будет запущен, вместо этого onLoadResource метод onLoadResource . В этом методе я попробовал webView.stopLoading(); Но он продолжает работать и onReceivedError метод 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-адреса не запускались, если они отключены и сообщают об этом.

Это известная проблема, и об этом сообщается. http://code.google.com/p/android/issues/detail?id=2887

Был предложен ряд обходных решений. например

  1. Переопределить onPageStarted
  2. Добавить JavascriptInterface от CommonsWare
  3. Отключить события касания WebView

Кроме того, зарегистрируйте BroadcastReceiver для прослушивания изменений состояния сети и примените обходной путь, когда связь будет потеряна. Сетевой прослушиватель Android

Я знаю его довольно старый пост, но спасибо за этот пост, это помогло мне решить проблему !!!

У меня была аналогичная проблема, и stopLoading решила мою проблему 🙂

ShouldOverrideUrlLoading вызывается, если он переходит на новую страницу, или если есть перенаправление, но не похоже на ex, щелкнув на iframe и т. Д. Я хотел добиться аналогичного поведения в своем приложении, и я понял, что onPageStarted вызывается, но не должен использовать его.

Я не переопределял onLoadResource, а просто onPageStarted, так как onLoadResource вызывается после onPageStarted. OnPageStarted проверяет, является ли он автономным и не загружается в этом случае. Надеюсь, это поможет кому-то.

Я думаю, что в onLoadRessource (..) и onPageStarted () он также должен быть

 view.stopLoading(); 

В вашем другом {..}