webview 重定向onPageFinished
时间: 2024-02-25 18:10:44 浏览: 193
在 WebView 中,重定向时有可能会触发多次 onPageFinished 回调,因为每次重定向都会重新加载页面。因此,在 onPageFinished 回调中判断是否是重定向可能不太可靠。
如果你想要捕获重定向事件,可以考虑使用 WebViewClient 的 shouldOverrideUrlLoading 方法。这个方法会在 WebView 加载 URL 前被调用,你可以在这里进行 URL 的判断和处理。
以下是一个简单的示例代码:
```java
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 判断是否是重定向
if (!url.equals(targetUrl)) {
// 发生了重定向,你可以在这里进行相关处理
return true; // 返回 true 表示已经处理该事件
}
return super.shouldOverrideUrlLoading(view, url);
}
});
```
在这个示例中,我们首先重写了 WebViewClient 的 shouldOverrideUrlLoading 方法,在方法中判断当前页面的 URL 是否与预期的目标 URL 相同,如果不同则说明发生了重定向,你可以在这里进行相关处理。注意,这个方法只会被调用一次,因此比 onPageFinished 更可靠。同时,为了保证正常加载页面,我们还需要调用 super.shouldOverrideUrlLoading(view, url) 来让 WebView 继续加载 URL。
阅读全文