Это может быть поздняя публикация, но она может помочь другим разработчикам ...
Вам нужно установить setWebViewClient на webview перед загрузкой URL-адреса на него, например:ниже,
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
В некоторой предыстории вышеприведенного кода Документация заявляет в литеральных словах, как показано ниже, о методе shouldOverrideUrlLoading .
* @param view The WebView that is initiating the callback.
* @param request Object containing the details of the request.
* @return {@code true} if the host application wants to leave the current WebView
* and handle the url itself, otherwise return {@code false}.
*/
@Override
@SuppressWarnings("deprecation") // for invoking the old shouldOverrideUrlLoading.
@RequiresApi(21)
public boolean shouldOverrideUrlLoading(@NonNull WebView view,
@NonNull WebResourceRequest request) {
if (Build.VERSION.SDK_INT < 21) return false;
return shouldOverrideUrlLoading(view, request.getUrl().toString());
}
Если вы видите документациювыше для возвращая значение , он говорит,
@return {@code true} if the host application wants to leave the current WebView
*and handle the url itself, otherwise return {@code false}.
Так просто говорится: если вы вернете true из shouldOverrideUrlLoading метод, этопопросит браузер по умолчанию вашего устройства обработать запрос на открытие URL, и если вы вернете false , тогда ваш URL будет загружен только через веб-просмотр.
Теперь вы можете загрузить свойURL в веб-просмотре либо после этого setWebViewClient вызова, либо вы также можете загрузить свой URL-адрес внутри shouldOverrideUrlLoading метода перед возвратом значения.