姜饼中的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更改为自定义网址方案或协议?
由于
答案 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
您可以改用this page。