Android WebView 的shouldOverrideUrlLoading方法不被調用
webView使用還是很頻繁的,尤其是電商、導購類app,他們需要用webview加載購物頁面、活動頁面等,然後有一些特殊需求需要攔截加載的url。都知道,要想攔截url,我們必須重寫shouldOverrideUrlLoading這個方法
問題來了:shouldOverrideUrlLoading方法不走,怎麼辦?
首先打開webview 的WebViewClient,我們能看到裏面shouldOverrideUrlLoading 有兩個
可以看到shouldOverrideUrlLoading(WebView view, WebResourceRequest request)是可以通過request.getUrl()獲取到WebView需要加載的地址,然後通過shouldOverrideUrlLoading(WebView view, String url)此方法顯示加載
在android 7.0系統以上 已經摒棄了shouldOverrideUrlLoading(WebView view, String url)此方法,所以,如果要攔截URL,我們需要做兼容性處理,重寫shouldOverrideUrlLoading(WebView view, WebResourceRequest request)方法,獲取得到的可正常使用的URL
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.loadUrl(request.getUrl().toString());
} else {
view.loadUrl(request.toString());
}
return true;
}
再次測試 shouldOverrideUrlLoading(WebView view, String url)方法已經可以正常攔截到url了