2013-07-29 49 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不叫所有的版本。

相關問題