Мне нужно добавить несколько заголовков к URL-ссылке (до ее вызова) в веб-просмотре, и я расширил класс WebViewClient
следующим кодом:
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
final Uri uri = request.getUrl();
return handleUri(view, uri);
}
private boolean handleUri(WebView view, final Uri uri) {
if (uri.toString().startsWith("mailto:")) {
// some code
return true;
} else {
view.loadUrl(uri.toString(), headers);
return true;
}
}
Переменная headers
является Map<String, String>
переменная.
На сервере я регистрирую заголовки, которые я получаю, когда нажимаю на ссылку веб-просмотра, и вижу следующее:
- Если я ставлю точку останова (в Android Studio) на
view.loadUrl(uri.toString(), headers)
, я вижу заголовки журналов на сервере, даже если код заблокирован в этой строке (перед вызовом loadUrl
происходит первый вызов, это странное поведение). - В этом первомcall, заголовки запроса не содержат мои новые заголовки
- Когда я продолжаю выполнение кода, происходит другой вызов (зарегистрированный на сервере) с моими новыми заголовками.
Так что я не знаю, почему, когда я нажимаю на ссылку веб-просмотра, ссылка, по-видимому, открывается дважды.