shouldOverrideUrlLoading会导致该网址被调用两次

时间:2019-10-08 15:40:00

标签: android webview android-webview

我需要在Web视图中的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>变量。

在服务器上,我记录了单击webview链接时获得的标头,看到的是:

  • 如果我在view.loadUrl(uri.toString(), headers)行上放置一个断点(在android studio中),即使该行上的代码被阻止,我也会在服务器上看到日志头(在{{1}之前有第一个调用},这就是奇怪的行为。
  • 在第一次调用中,请求的标题不包含我的新标题
  • 当我继续执行代码时,还有另一个调用(记录在服务器上)与我的新标头。

所以我不知道为什么当我单击webview链接时,该链接显然被打开了两次。

0 个答案:

没有答案