Android WebView - 拦截点击事件

27

我已经写了一个简单的HelloWorld应用程序,其中包含一个链接到CNN的WebView,并在我的资产文件夹中的simple.html页面上展示。

<a href="http://cnn.com">cnn.com</a>

我该如何在我的Activity中捕获此处的点击事件,停止WebView的导航,并通知Activity "http://CNN.com"被点击了?

1个回答

73

然后你需要为你的WebView设置一个WebViewClient,并重写shouldOverrideUrlLoadingonLoadResource方法。让我给你举个简单的例子:

WebView yourWebView; // initialize it as always...
// this is the funny part:
yourWebView.setWebViewClient(yourWebClient);

// somewhere on your code...
WebViewClient yourWebClient = new WebViewClient(){
    // you tell the webclient you want to catch when a url is about to load
    @Override
    public boolean shouldOverrideUrlLoading(WebView  view, String  url){
        return true;
    }
    // here you execute an action when the URL you want is about to load
    @Override
    public void onLoadResource(WebView  view, String  url){
        if( url.equals("http://cnn.com") ){
            // do whatever you want
        }
    }
}

抱歉,我知道这篇文章有点过时了,但它正是我在寻找的东西,除了...我的导航没有完成。当用户在 WebView 中点击链接时,它会跳转到 shouldOverrideLoading 并执行相应操作,但导航并没有完成。我想让它完成,只想先嗅探一下他们选择了什么。 - GPGVM
1
在这种情况下,您不应该在shouldOverrideUrlLoading中返回true。 - Cristian
1
所以除非你真的想要中止,否则返回假。 - GPGVM
有没有办法区分请求的资源(如CSS、JS文件、图像)和用户点击的链接?请查看我的问题 - HelpingHand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接