【问题标题】:Android WebView - Intercept clicksAndroid WebView - 拦截点击
【发布时间】:2010-07-14 20:08:34
【问题描述】:

我编写了一个简单的 helloworld 应用程序,它带有一个 WebView,它在我的资产文件夹中的 simple.html 页面上有一个指向 CNN 的链接。

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

如何在我的 Activity 上捕获对此的点击,停止 WebView 导航,然后通知 Activity “http://CNN.com”被点击?

【问题讨论】:

    标签: android webview


    【解决方案1】:

    然后您必须将WebViewClient 设置为您的WebView 并覆盖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 并执行此操作,但未完成导航。我确实希望它完成只是想嗅探他们首先选择的内容。
    • 在这种情况下,您不应该在 shouldOverrideUrlLoading 中返回 true
    • 所以返回 false 除非你真的想中止。
    • 有没有办法区分请求的资源(如 CSS、JS 文件、图像)和用户点击的链接?请看my question
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2018-02-03
    • 1970-01-01
    相关资源
    最近更新 更多