如何检测webview中链接的点击次数

时间:2014-12-13 22:30:05

标签: java android webview

我使用此代码检查用户是否触摸了webview

                webview.setOnTouchListener(new View.OnTouchListener() 
                {  
                    public boolean onTouch(View v, MotionEvent event) 
                    {
                        if(event.getAction() == MotionEvent.ACTION_UP)
                        {
                                //action

                        }  
                      return false;
                    }
                });

但是我只有在用户点击(触摸)链接时才需要执行操作,而不是用户触摸某些图片或在webview中进行scrool。 我需要在加载新网页时,或者当用户点击链接时重新启动某些变量,但是当他在屏幕上随机点击或者他的时候,他需要重新启动。 我不能用

public void onPageStarted(WebView view, String url, Bitmap favicon)

public boolean shouldOverrideUrlLoading(WebView view, String url)

因为在页面加载时会多次调用它,我只需要第一次执行操作,当用户单击链接(或按钮或使webview加载新页面的某些内容)时

有人知道怎么做吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

第一步 - 启用JavaScript:

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

第二步 - 在Java和Javascript之间创建接口:

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

注册您的界面:

webView.addJavascriptInterface(new WebAppInterface(this), "Android");

并将此JS放在您的html页面中:

<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>

html示例:

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

如果您显示的页面不是您的,您可以将它们下载为纯文本,然后插入JS并使用myWebView.loadDataWithBaseURL加载html。通过这种方式,您可以完全控制哪个用户正在点击以及如何处理

老实说我不明白为什么你不能用shouldOverrideUrlLoading(WebView view, String url)通过检查url字符串到达​​的内容并设置'消耗'标志或像这样的

来实现这一点

另外:整个代码都是从HERE

中窃取的
相关问题