Как перехватить нагрузки URL в WebView (android)?

У меня есть WebView, в котором я загружаю страницу с помощью специальной ссылки (например, app: // action). Я зарегистрировал схемы url в файле манифеста, и когда я нажимаю на ссылку, метод onResume () моей активности вызывается с правильными данными, и он работает нормально.

Моя проблема в том, что WebView по-прежнему пытается загрузить ссылку, и мой WebView заканчивается, чтобы показать сообщение «Веб-страница недоступна». Я не хочу этого.

Как я могу запретить WebView загружать URL?

Вот мой код:

WebView banner = ... banner.setWebViewClient(new WebViewClient() { @Override public void onLoadResource(WebView view, String url) { if (url.startsWith("app://")) { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url), getContext(), Main.class); //startActivity(i); } } } banner.loadUrl("url_to_the_banner"); 

Solutions Collecting From Web of "Как перехватить нагрузки URL в WebView (android)?"

Вместо этого используйте WebViewClient.shouldOverrideUrlLoading.

 public boolean shouldOverrideUrlLoading(WebView view, String url){ // handle by yourself return true; } 

Ссылка WebViewClient

Обновления: метод shouldOverrideUrlLoading(WebView, String) устарел на уровне API 24. shouldOverrideUrlLoading(WebView, WebResourceRequest) используйте shouldOverrideUrlLoading(WebView, WebResourceRequest) .

Но в противном случае он должен возвращать false, так что:

 @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ if(url.startsWith(myString){ // handle by yourself return true; } // ... return false; }