如何在webview中处理回调

时间:2011-12-28 18:44:37

标签: android callback webview

我正在研究一个Android项目,并且有一个关于如何在不同的webview中进行回调的问题。我也在项目中使用了JSInterface。这里我有2个网页浏览量。一个有一个索引页面,另一个是一个叠加层(虽然仍然是一个html页面。)我想要做的是,如果任何用户点击叠加层上的某些链接,它应该触发一个回调函数,该函数写在java文件中,其中索引页面通过JSInterface连接。这可能听起来令人困惑,但我已经画出一些东西来帮助说清楚了!

谢谢!enter image description here

1 个答案:

答案 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();")