#java #android
#java #Android
Вопрос:
У меня возникают проблемы при попытке открыть внутренние ссылки в моем клиенте Android на базе webview, который я делаю для малого бизнеса. Что мне нужно сделать, чтобы приложение могло открывать ссылки только с помощью «https://forums.mywebsite.com «и «https://mywebsite.com«?
У меня уже есть процедура, необходимая для открытия внешних ссылок с помощью action view, но это приводит только к удалению ссылок с первой страницы, указанной в loadurl(), и не связывает их внутри клиента, а рассматривает их как внешние ссылки.
aWebView.setWebViewClient(new WebViewClient() {
@Override
@TargetApi(21)
public boolean shouldOverrideUrlLoading(WebView aWebView, WebResourceRequest request) {
Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
superWebView.getContext().startActivity(intent);
return true;
}
});
TL; DR: ожидания ссылок не работают, и любая помощь была бы признательна.
Ответ №1:
Как объясняется в документах:
возврат true приводит к тому, что текущий WebView прерывает загрузку URL-адреса, в то время как возврат false приводит к тому, что WebView продолжает загрузку URL-адреса как обычно.
У вас должна быть логика в методе, который проверяет URL-адрес и возвращает false, только если URL-адрес соответствует вашим ожидаемым URL-адресам, и запускает действие и возвращает true в противном случае.
Что-то в этом роде:
WebView.setWebViewClient(new WebViewClient() {
@Override
@TargetApi(21)
public boolean shouldOverrideUrlLoading(WebView aWebView, WebResourceRequest request) {
if (TextUtils.equals(request.getUrl().toString(), "https://forums.mywebsite.com")
||TextUtils.equals(request.getUrl().toString(), "https://mywebsite.com")) {
return false;
} else {
Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
superWebView.getContext().startActivity(intent);
return true;
}
}
});
Комментарии:
1. Можете ли вы привести пример этого? Единственная документация, которую я смог найти, была для версий api до api 24 и не работает в SDK, который я использую.
2. Отредактировал ответ, чтобы добавить пример