在Android 10及以上版本中,WebViewClient的shouldOverrideUrlLoading方法不再被调用。而是使用shouldOverrideUrlLoading(WebView webView, WebResourceRequest request)代替。要对此进行处理,需要检查设备的API级别,然后相应地更改应用程序代码。
以下是代码示例,显示了如何在不同的API级别下使用shouldOverrideUrlLoading方法。
// 在早期版本(API level <24)中使用的shouldOverrideUrlLoading方法
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 在这里处理URL重定向
return true;
}
// 在Android 10及以上版本中使用的shouldOverrideUrlLoading方法
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// 在这里处理URL重定向
return true;
}
// 检查API级别并相应地调用正确的shouldOverrideUrlLoading方法
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return handleUrl(view, request.getUrl().toString());
}
});
} else {
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return handleUrl(view, url);
}
});
}
// 处理URL并返回是否需要重定向的结果
private boolean handleUrl(WebView view, String url) {
// 在这里处理URL重定向
return true;
}
上一篇:AndroidWebView的ScrollTo在Instagram上无效。
下一篇:AndroidWebView的“goBack”方法是否会刷新上一个页面的URL?如果不刷新,如何在不丢失URL堆栈的情况下实现刷新上一个页面?