我的Web应用在加载过程中会向一个名为callback://的URL发出请求,以触发我的Android应用程序中的一个函数。
我正在尝试使用shouldOverrideUrlLoading
捕获此请求,但它没有被调用...有什么想法吗?
是非标准的URL方案导致了这个问题吗?
更重要的是他们没有说什么。该方法仅在用户在Webview内部点击链接时才会被调用。您似乎正在使用代码调用WebView中的loadUrl()方法。这不会导致调用shouldOverrideUrlLoading。所以这就是您看到的。当当前WebView即将加载新的url时,给主机应用程序一个接管控制的机会。如果未提供WebViewClient,则默认情况下,WebView将请求Activity Manager选择适当的处理程序来处理url。如果提供了WebViewClient,则返回true表示主机应用程序处理url,而返回false表示当前WebView处理url。对于使用POST“方法”的请求,不会调用此方法。
我曾经遇到过同样的问题。在谷歌上进行了长时间的搜索后,我在Google的Android开发者文档中找到了解决方案。
如果您正在使用Android 4.2+版本,则必须向您的URL添加前缀。您可以在服务器端添加它,也可以添加:
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;
}
}
}
我希望这能帮助到你。