Android WebView 的**shouldOverrideUrlLoading**方法不被調用

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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章