32

我的 web 视图加载了一个 url,在完成加载后,该 url 被更改为另一个 url。我怎样才能抓住新的网址。getURL()总是返回第一个 url 而不是第二个。如果我使用浏览器,我可以看到新的 URL,但如果从 webview 中看不到。

4

3 回答 3

53

您可以使用 webClient 并实现shouldOverrideUrlLoading在 WebView 加载它们之前拦截所有 url。

    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
        }
    });
于 2013-11-07T10:46:40.473 回答
5

利用

getOriginalUrl () 

它返回最初为当前页面请求的 URL

getUrl ()并不总是与传递给的 URL 相同,WebViewClient.onPageStarted因为尽管该 URL 的加载已经开始,但当前页面可能没有改变。

getOriginalUrl ()获取当前页面的原始 URL。这并不总是与传递给的 URL 相同,WebViewClient.onPageStarted因为尽管该 URL 的加载已经开始,但当前页面可能没有改变。此外,可能存在重定向导致与最初请求的 URL 不同的 URL。

于 2013-11-07T09:07:46.747 回答
0

在我的情况下,WebViewClient 没有显示 webview 上是否有更改,我认为这与正在运行的 web 有关。

我可以使用 OnProgressChanged 从 WebChromeClient 获取该信息,我不知道这是否会对人们有所帮助,但这里是代码:

webview.webChromeClient = object : 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)
        }
    }
}

这样我就可以知道加载了什么以及何时完成。

于 2019-10-02T08:00:40.090 回答