android 2.2中的WebViewClient不应调用OverrideUrlLoading

android 2.2中的WebViewClient不应调用OverrideUrlLoading,android,android-webview,Android,Android Webview,姜饼中的WebViewClient中似乎有一个bug,我们依靠boolean shouldOverrideUrlLoading(WebView视图,字符串url)方法将标题放回重定向和重新加载 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith(URL.BASE_URL)) { view.loadUrl(url, RestCli

姜饼中的WebViewClient中似乎有一个bug,我们依靠boolean shouldOverrideUrlLoading(WebView视图,字符串url)方法将标题放回重定向和重新加载

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
     if (url.startsWith(URL.BASE_URL)) {
         view.loadUrl(url, RestClient.defaultHeaders);  
     }else {
         onExternalBrowserURL(url);
     }
    return true;
}
在2.2中,shouldOverrideUrlLoading并不总是被称为移动网站,而不是android网站加载

这里列出了一个bug 最后一条评论如下:(

有没有人有一个解决方案不涉及将所有URL更改为自定义URL方案或协议


谢谢

应该重写。只调用()

将要在当前WebView中加载新url时

这意味着,如果您加载到WebView,然后再次加载,则第二次shouldOverrideUrlLoading将不会启动。这很烦人,因为如果不使用HttpRequest之类的工具自行下载网页,就无法向每个请求添加自定义标题

我认为他们设计的应用程序应该覆盖URL,主要是为了让WebView用户能够拦截对youtube等网站的第一个请求,然后将用户引导到应用程序中,而不是使用浏览器。他们设计的应用程序不是用于添加标题

我尝试了一段时间,使用它向我的请求添加一个DO NOT TRACK标头,除了出于上述原因每次都不发送标头外,loadUrl(url,header)方法没有将标头放置在正确的位置,站点也无法识别DNT标头


tldr:No

应覆盖加载url时不调用

loadUrl("http://google.com");
或者,如果浏览器像您提到的那样重定向url。根据,重定向在API级别11和更低级别上不起作用,但是如果您想获取在
loadUrl
中使用的url,则不会调用所有版本的
shouldOverrideUrlLoading

您可以改为使用。

类似: