在API21中谷歌修改了shouldInterceptRequest方法来使用WebResourceRequest请求而不是String url.
有没有什么办法可以编写扩展WebViewClient并处理这两种方法的泛型类?
我的最低API版本是18.
有没有什么办法可以编写扩展WebViewClient并处理这两种方法的泛型类?
我的最低API版本是18.
谢谢
克里斯蒂安
解决方法
Google modified shouldInterceptRequest method to use WebResourceRequest request instead of String url
不,他们添加了第二个shouldInterceptRequest()方法.两者都在API Level 21中提供;字符串变体在API级别11上可用.虽然字符串1被标记为已弃用,但为了向后兼容,应该支持字符串变体很长一段时间.
Is there any way I could write a generic class extending WebViewClient and handle both methods?
appInterceptRequest()的WebResourceRequest版本的内置实现只是调用shouldInterceptRequest()的String实现:
public WebResourceResponse shouldInterceptRequest(WebView view,WebResourceRequest request) { return shouldInterceptRequest(view,request.getUrl().toString()); }
(从现在的the source code起)
所以,你有两个选择:
>如果您不需要WebResourceRequest,只需覆盖String版本,它将用于所有相关的API级别.>覆盖两者,知道WebResourceRequest将在API Level 21上使用,String版本将用于API级别11-20.