shouldOverrideUrlLoading приводит к тому, что URL вызывается дважды - PullRequest
0 голосов
/ 08 октября 2019

Мне нужно добавить несколько заголовков к 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, заголовки запроса не содержат мои новые заголовки
  • Когда я продолжаю выполнение кода, происходит другой вызов (зарегистрированный на сервере) с моими новыми заголовками.

Так что я не знаю, почему, когда я нажимаю на ссылку веб-просмотра, ссылка, по-видимому, открывается дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...