我的网页视图加载了一个网址 - 在完成加载后 - 更改为另一个网址。
我怎样才能抓住新的网址。 getURL()
始终返回第一个网址而不是第二个网址。
如果我使用浏览器,我可以看到新的URL但是我无法从webview获得。
答案 0 :(得分:42)
您可以使用webClient并实施 shouldOverrideUrlLoading 来拦截所有网址 在WebView加载它们之前。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Here put your code
Log.d("My Webview", url);
// return true; //Indicates WebView to NOT load the url;
return false; //Allow WebView to load url
}
});
答案 1 :(得分:4)
使用
getOriginalUrl ()
它返回最初为当前页面请求的URL
getUrl ()
并不总是与传递给WebViewClient.onPageStarted
的网址相同,因为虽然该网址的加载已经开始,但当前网页可能没有更改。
getOriginalUrl ()
获取当前页面的原始网址。这并不总是与传递给WebViewClient.onPageStarted
的URL相同,因为虽然该URL的加载已经开始,但当前页面可能没有更改。此外,可能存在重定向,导致与最初请求的URL不同。
答案 2 :(得分:0)
在我的情况下,WebViewClient没有显示Webview上是否有更改,我认为这与正在运行的Web有关。
我可以使用OnProgressChanged从WebChromeClient获得该信息,但我不知道这是否对人们有帮助,但这是代码:
webview.webChromeClient =对象:WebChromeClient(){
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
if (newProgress == 100) {
Log.d("testing", webview.getOriginalUrl())
Log.d("testing", webview.url)
}
}
}
这样,我可以知道加载了什么以及何时完成。