如何处理API21中的shouldInterceptRequest参数更改?

Kry*_*ian 7 android android-webview

在API21中谷歌修改了shouldInterceptRequest方法来WebResourceRequest request代替使用String url.有没有什么办法可以编写扩展WebViewClient和处理这两种方法的泛型类?我的最低API版本是18.

谢谢Krystian

Com*_*are 15

谷歌修改了shouldInterceptRequest方法来使用WebResourceRequest请求而不是String 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());
}
Run Code Online (Sandbox Code Playgroud)

(来自目前的源代码)

所以,你有两个选择:

  1. String如果您不需要,只需覆盖该版本,WebResourceRequest它将用于所有相关的API级别.

  2. 覆盖两者,知道WebResourceRequest将在API Level 21+ String上使用该版本,并且该版本将用于API级别11-20.