安卓Webview的shouldOverrideUrlLoading方法

15

shouldOverrideUrlLoading 方法在什么时候被调用?

webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {


    }
});
  1. 这个方法在URL的初始加载时被调用吗?例如:webView.loadUrl("file:///android_asset/html/index.html")
  2. 每当WebView的URL改变时,它会被调用吗?

有参考资料吗?我没有找到。谢谢。


请参考这个答案。我也检查过,当使用loadUrl时,shouldOverrideUrlLoading不会被调用。 - erdemlal
2个回答

10
  1. 然而,当WebView加载一个不同于用户请求的URL时,该方法将被调用。

  2. 调用loadUrl()也会触发shouldOverrideUrlLoading()方法(仅当要加载新的URL时)。

在当前WebView即将加载新的URL时,给予宿主应用程序控制的机会。如果未提供WebViewClient,则默认情况下,WebView会请求Activity Manager选择适当的处理程序来处理URL。 如果提供了WebViewClient,则返回true表示宿主应用程序将处理URL,而返回false则表示当前WebView将处理URL。

参考:public boolean shouldOverrideUrlLoading (WebView view, String url)


4
仅仅调用 loadUrl() 方法是不会触发 shouldOverrideUrlLoading() 的,只有在即将加载新的URL时才会触发。 - Henrique de Sousa
3
@HenriquedeSousa,谢谢你宝贵的反对票。这将帮助我再次学习概念:)。请添加您的答案,这将对他人和我也有帮助。 - Pankaj Kumar
如果您编辑了您的消息,以便人们不会被您的答案误导并浪费宝贵的时间,我将非常高兴再次点赞 :) - Henrique de Sousa
2
@HenriquedeSousa 根据您的评论更新了答案。 - Pankaj Kumar
@PankajKumar loadUrl不会触发shouldOverrideUrlLoading,您能详细说明第二点吗? - Vikas Bansal

0
以下是您两个问题的答案:
根据文档,它将在每次新的URL即将在当前WebView中加载时进行管理。

网页视图中加载的初始URL怎么样? - JR Galia
@JRGalia 上面的答案适用于这两个问题。 - Paresh Mayani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接