#android #webview
#Android #webview
Вопрос:
У меня есть webview с пользовательским клиентом webview. Я перехватываю запросы с:
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
// ...
}
иногда я получаю информацию о пользовательских событиях из webview в виде ссылки:
xyz://сделай что-нибудь
Когда это произойдет, я хочу, чтобы webview проигнорировал это. Но ‘shouldInterceptRequest’ должен что-то возвращать, и когда я возвращаю ‘null’ вместо моей страницы, он показывает: ‘неизвестный URL xyz://do-something’. Как я могу с этим справиться? Как я могу перехватить ссылку, но отключить действие на стороне webview?
Ответ №1:
Вам просто нужно выполнить сравнение строк с сайта, на котором вы находитесь, и сайта, на который вы хотите перейти.
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.example.com")) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
Комментарии:
1. Я не могу использовать ‘public boolean shouldOverrideUrlLoading(веб-просмотр, строковый URL)’, это должен быть ‘public WebResourceResponse shouldInterceptRequest(веб-просмотр, строковый URL)’.