2013-07-29 47 views
1

姜饼中的WebViewClient似乎存在一个错误,我们依靠boolean shouldOverrideUrlLoading(WebView视图,String url)方法将标题放回重定向和重新加载。Android 2.2中的WebViewClient shouldOverrideUrlLoading不叫

@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的改变到自定义URL方案或协议的解决方案?

由于

+0

类似:http://stackoverflow.com/questions/13096103/android-overriding-shouldoverrideurlloading-not-working-on-htc-devices – trante

回答

1

shouldOverrideUrlLoading仅称为(taken from the API guide

当一个新的URL是关于当前的WebView

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

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

我尝试了一会用它来一个不跟踪头添加到我的请求,除了为上述原因,每次不发送头,使用loadURL(URL,标题)方法未能将在头正确的地点和网站没有识别DNT标题。

tldr:没有

1

shouldOverrideUrlLoading加载一个URL像

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

时不叫,或者如果浏览器重定向的URL像你提到的。如果你想获得您在loadUrl

使用您可以使用onPageStarted代替URL重定向不会对API等级11的工作和更低根据this page,但shouldOverrideUrlLoading不叫所有的版本。

相关问题