我正在研究一个Android项目,并且有一个关于如何在不同的webview中进行回调的问题。我也在项目中使用了JSInterface。这里我有2个网页浏览量。一个有一个索引页面,另一个是一个叠加层(虽然仍然是一个html页面。)我想要做的是,如果任何用户点击叠加层上的某些链接,它应该触发一个回调函数,该函数写在java文件中,其中索引页面通过JSInterface连接。这可能听起来令人困惑,但我已经画出一些东西来帮助说清楚了!
谢谢!
答案 0 :(得分:8)
您可以使用myurl://函数等自定义URL方案作为功能链接。然后为WebView的shouldOverrideUrlLoading事件编写一个事件处理程序,在该事件中您决定如何处理URL:指示webview加载它,或者执行一些自定义操作。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.startsWith("myurl://"))
{
// Parse further to extract function and do custom action
}
else
{
// Load the page via the webview
view.loadUrl(url);
}
return true;
}
我使用startsWith检查这个快速而肮脏的例子的URL,但你应该考虑使用android.net.Uri.parse来解析URL。
这应该允许您调用Java函数foo()而无需通过第一个WebView。
如果你想浏览第一个webview,那么你可以像这样在JSInterface上调用一个函数(其中webView1是通过findViewById检索的第一个WebView):
webView1.loadUrl("javascript:myjsinterface.myjsfunc();")