Android WebView - 未使用url请求调用shouldOverrideUrlLoading

时间:2014-08-14 14:27:59

标签: java android webview

我的webapp在加载过程中的某个时刻向url发出请求,这是一个回调://以便在我的Android应用程序中触发一个函数。

我试图通过shouldOverrideUrlLoading抓住这个请求,但是没有被调用..任何想法?

这是非标准的url方案吗?

2 个答案:

答案 0 :(得分:2)

这就是他们在shouldOverrideUrlLoading reference

中所说的话
  

当要在当前WebView中加载新URL时,让主机应用程序有机会接管控件。如果未提供WebViewClient,则默认情况下WebView将要求活动管理器为URL选择正确的处理程序。如果提供了WebViewClient,则返回true表示主机应用程序处理url,而return false表示当前WebView处理url。使用POST"方法"。

的请求不会调用此方法

更重要的是他们不会说什么。仅当用户点击Webview内的链接时才会调用该方法。你正在用你的代码调用WebView中的loadUrl()方法。这不会导致调用shouldOverrideUrlLoading。这就是你所看到的。

答案 1 :(得分:1)

我有同样的问题。经过长时间的谷歌搜索,我在谷歌的Android开发者文档中找到了解决方案。

如果您使用的是Android版本4.2+,则必须在网址中添加前缀。您可以在服务器端添加它,也可以添加:

String convertedHtml = yourHtmlString.replace("<a href=\"#", "<a href=link:\"");

您可以覆盖并检查链接:

webView.setWebViewClient(new WebViewClient() {
            // Override URL

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //Log.e("url:", url);
                if (url.startsWith("link:"))
                {
                 // do what you want 
                 return true;
                }
            }
}

我希望这会对你有所帮助。