Android,抓住webview重定向网址

时间:2013-11-07 09:01:39

标签: android webview android-webview

我的网页视图加载了一个网址 - 在完成加载后 - 更改为另一个网址。 我怎样才能抓住新的网址。 getURL()始终返回第一个网址而不是第二个网址。 如果我使用浏览器,我可以看到新的URL但是我无法从webview获得。

3 个答案:

答案 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)
        }
    }
}

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