如何在webview中处理回调

sam*_*wei 3 android callback webview

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

谢谢!在此输入图像描述

The*_*heo 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;  
}  
Run Code Online (Sandbox Code Playgroud)

我使用startsWith检查这个快速和脏的示例的URL,但是您应该考虑使用android.net.Uri.parse来解析URL.

这应该允许您调用Java函数foo()而无需通过第一个WebView.

如果你想要浏览第一个webview,那么可以像这样在JSInterface上调用一个函数(其中webView1是通过findViewById检索的第一个WebView):

webView1.loadUrl("javascript:myjsinterface.myjsfunc();")
Run Code Online (Sandbox Code Playgroud)