在API21中,Google修改了shouldInterceptRequest方法,使用WebResourceRequest request
而不是String url
。 有什麼辦法可以寫一個擴展WebViewClient
的泛型類並處理這兩種方法? 我的最低API版本是18如何處理API21中的shouldInterceptRequest參數更改?
感謝 克里斯蒂安
在API21中,Google修改了shouldInterceptRequest方法,使用WebResourceRequest request
而不是String url
。 有什麼辦法可以寫一個擴展WebViewClient
的泛型類並處理這兩種方法? 我的最低API版本是18如何處理API21中的shouldInterceptRequest參數更改?
感謝 克里斯蒂安
谷歌修改shouldInterceptRequest方法使用WebResourceRequest請求而不是字符串URL
不,他們增加了秒shouldInterceptRequest()
方法。兩者均可在API Level 21+中獲得; String
變體可用於API Level 11+。雖然String
被標記爲已棄用,但爲了向後兼容,String
變體應支持相當長一段時間。
有什麼辦法可以寫一個泛型類來擴展WebViewClient並處理這兩種方法嗎?
內置實施WebResourceRequest
版本的shouldInterceptRequest()
只是調用String
實施shouldInterceptRequest()
:
public WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
return shouldInterceptRequest(view, request.getUrl().toString());
}
(從the source code截至目前)
所以,你有兩個選擇:
只需覆蓋String
版本,如果您不需要WebResourceRequest
,它將用於所有相關API級別。
覆蓋兩者,知道WebResourceRequest
將用於API Level 21+,而String
版本將用於API Level 11-20。
謝謝CommonsWare,其實我所做的就是實現這兩種方法並用'@TargetApi(Build.VERSION_CODES.LOLLIPOP)'從API21之一。 – Krystian
我認爲重寫字符串版本應該很好。 –