Это происходит потому, что такие ссылки вызывают открытие всплывающих окон (новые вкладки, если вы находитесь в браузере). По умолчанию вскрытие всплывающих окон отключено в WebView. Выезд http://developer.android.com/reference/android/webkit/WebSettings.html#setSupportMultipleWindows(boolean)
Вы должны установить WebChromeClient для своего основного WebView, а затем предоставить пустой новый WebView, который будет служить для открытия содержимого всплывающего окна.
Это суть того, что вам нужно сделать:
webView.getSettings().setSupportMultipleWindows(true);
webView.setWebChromeClient(new WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
// Create a WebView
WebView popupWebView = new WebView(view.getContext());
// TODO: Put WebView into your view hierarchy, if needed.
//
// This is needed to open the url in the WebView.
// Without the client, WebView will try to start a browser.
popupWebView.setWebViewClient(new WebViewClient());
WebView.WebViewTransport transport =
(WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(popupWebView);
resultMsg.sendToTarget();
return true;
}
});
Этот ответ содержит дополнительный код, который необходим, если вы хотите, чтобы справиться с закрытием всплывающих окон: How to handle facebook like with confirm in android webview
BTW, это не нужно переопределить shouldOverrideUrlLoading
, если вы просто хотите, чтобы открывать ссылки внутри WebView, просто установив WebViewClient достаточно:
webView.setWebViewClient(new WebViewClient());
Этот метод отлично работает в других URL-адресах на веб-странице. проблемы - это некоторые внешние ссылки, которые не вызываются. – user3800832