android 2.2中的WebViewClient shouldOverrideUrlLoading未调用

时间:2013-07-29 15:41:45

标签: android android-webview

姜饼中的WebViewClient似乎存在一个错误,我们依靠boolean shouldOverrideUrlLoading(WebView视图,String 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网站加载。

此处列出了错误http://code.google.com/p/android/issues/detail?id=15612 见这里2013年是最后评论:( http://code.google.com/p/android/issues/detail?id=2887

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

由于

2 个答案:

答案 0 :(得分:1)

shouldOverrideUrlLoading仅被调用(taken from the API guide

  

当要在当前的WebView

中加载新网址时

这意味着如果您将http://www.google.com加载到WebView中然后再次加载,第二次shouldOverrideUrlLoading将不会触发。这很烦人,因为没有办法为每个请求添加自定义标题,而无需使用类似HttpRequest的内容自行下载网页。

我认为他们主要设计了shouldOverrideUrlLoading,以便WebView用户可以拦截对youtube等网站的第一个请求,然后将用户引导到应用程序而不是使用浏览器。他们没有设计它用于遗憾地添加标题。

我试了一段时间用它来为我的请求添加一个DO NOT TRACK标头,除了每次都没有因为上述原因发送标题,loadUrl(url,header)方法没有将标题放在正确的地点和网站无法识别DNT标题。

tldr:否

答案 1 :(得分:1)

加载像

这样的网址时,不会调用

shouldOverrideUrlLoading

loadUrl("http://google.com");

或者浏览器是否像您提到的那样重定向网址。根据{{​​3}},重定向不适用于API级别11及更低版本,但如果您想获取在shouldOverrideUrlLoading loadUrl不会调用所有版本>

您可以改用this page