-1

我正在使用標準的WebView實現,並且覆蓋了shouldOverrideUrlLoading方法來捕獲對外部域的請求。電話正在我所有的測試版本中捕獲(15-22);然而,在15-18,在調用shouldOverrideUrlLoading來執行外部瀏覽器請求之前,WebView導航到請求的URL。shouldOverrideUrl在SDK版本的內部和外部加載<18

實施例:

SDK> = 19

web視圖 - >裝載URL - > shouldOverrideUrlLoading(TRUE) - > URL在外部瀏覽器和web視圖的狀態被保持加載。

SDK < = 18

web視圖 - >裝載URL - > URL加載web視圖 - > shouldOverrideUrlLoading(TRUE) - > URL在外部瀏覽器和web視圖的狀態丟失加載。

的WebView超越代碼:

private void webViewClient() { 
    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.startsWith(BASE_URL)) { 
       return false; 
      } else { 
       Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(i); 
       return true; 
      } 
     } 
    }); 
} 

回答

1

一個可能的原因:
這種行爲很有道理,如果要加載的URL是「無效」(喜歡比「http://whatever.com/」其他的東西),而且在某種程度上也一個「重定向」。

如果加載的無效url是「重定向」...> = 19,則根本不會調用shouldOverrideUrlLoading。

但是,如果FINAL URL有效,並且不以BASE_URL開頭,它將調用shouldOverrideUrlLoading,然後啓動新窗口,如代碼所示。

這就是說,我不知道如何獲得一個無效的URL作爲重定向 - 所以沒有更多關於URL的信息(BASE_URL和被請求的URL),這是不可能的。

瞭解更多關於19個+ ...大的變化的WebView之間的差異當時作了:

https://developer.android.com/guide/webapps/migrating.html