Android webview捕获链接点击

Android webview捕获链接点击,android,Android,我正在开发的应用程序有一个webview,我需要捕获webview请求单击事件(例如:单击链接、单击按钮、单击youtube视频播放按钮,如…)使用此代码这对我有用 webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url)

我正在开发的应用程序有一个webview,我需要捕获webview请求单击事件(例如:单击链接、单击按钮、单击youtube视频播放按钮,如…)

使用此代码这对我有用

webview.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                return true;
            }
        });
这是可以做到的

您必须为您的WebView设置
WebViewClient
。这就是如何做到这一点

WebView webView;//make sure to initialize  
webView.setWebViewClient(webViewClient);

WebViewClient webViewClient= new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView  view, String  url){
        return true;
    }
    @Override
    public void onLoadResource(WebView  view, String  url){
        if( url.equals("http://yoururl.com") ){
            // do something
        }
    }
}

您可以这样做:

WebView myWebView  = (WebView) findViewById(R.id.yourWebView);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl("yourLink");
但别忘了创建WebViewClient:

public class MyWebViewClient extends WebViewClient {

     @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            return true;
        }
}

处理应用程序中的链接时,WebViewClient回调(如shouldOverrideUrlLoading和doUpdateVisitedHistory)可能不会显示一致或正确的值。在这种情况下,@android.webkit.JavascriptInterface是您的朋友。其想法是编写javascript点击处理程序(在内容中),通过JavascriptInterface方法将信息传递给应用程序

下面是一个javascript示例,用于在内部跳转到#-锚点的源位置捕获滚动条。一旦进入doUpdateVisitedHistory,获得此信息通常为时已晚

if (typeof AndroidCode != "undefined") { 
  var coll = document.getElementsByTagName("a"); 
  for (let i = 0; i < coll.length; i++) { 
    var href = coll[i].getAttribute("href"); 
    if (href.indexOf("#") >= 0) { 
      coll[i].addEventListener("click", function() { 
        AndroidCode.reportInternalJump(); 
      }); 
    } 
  } 
}

在我的情况下,这没有抓住事件。对xml部分有什么要求吗?@Virthus安卓webview完全是有缺陷和无用的。代码段现在可以工作,但一分钟后就不工作了。我不知道它想要什么。
if (typeof AndroidCode != "undefined") {
    AndroidCode.setLoadedStatus(false);

    window.onload = function () {
       AndroidCode.setLoadedStatus(true);
    }
}