我的webapp在加载过程中的某个时刻向url发出请求,这是一个回调://以便在我的Android应用程序中触发一个函数。
我试图通过shouldOverrideUrlLoading
抓住这个请求,但是没有被调用..任何想法?
这是非标准的url方案吗?
答案 0 :(得分:2)
这就是他们在shouldOverrideUrlLoading reference
中所说的话当要在当前WebView中加载新URL时,让主机应用程序有机会接管控件。如果未提供WebViewClient,则默认情况下WebView将要求活动管理器为URL选择正确的处理程序。如果提供了WebViewClient,则返回true表示主机应用程序处理url,而return false表示当前WebView处理url。使用POST"方法"。
的请求不会调用此方法
更重要的是他们不会说什么。仅当用户点击Webview内的链接时才会调用该方法。你正在用你的代码调用WebView中的loadUrl()方法。这不会导致调用shouldOverrideUrlLoading。这就是你所看到的。
答案 1 :(得分:1)
如果您使用的是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;
}
}
}
我希望这会对你有所帮助。