在Android WebView中检测javascript函数调用

时间:2012-07-26 10:28:20

标签: android webview

我希望在点击链接(链接调用函数)后在webview中调用javascript函数之前做一些事情。

我试图通过重载“setOnTouchListener”来做这件事,但是当我尝试做的时候我总是得到((WebView)v)。getHitTestResult()。getExtra();

    mMainWebView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
            return false;
        }

    });

我知道将要调用的函数的名称,我可以为函数调用执行类似“shouldOverrideUrlLoading”的操作吗?

感谢。

2 个答案:

答案 0 :(得分:0)

    mWebView.setWebViewClient(new WebViewClient(){

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    Log.d(TAG,"shouldOverrideUrlLoading url: "+url);
                    if( url.startsWith("http:") || url.startsWith("https:") ) {
                   //capture the url and call method you want
                        return false;
                    }

                    // Otherwise allow the OS to handle it
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    mcContext.startActivity( intent ); 
                    return true;

                }

答案 1 :(得分:0)

对于OP来说这可能有点晚了,但我找到了一个对我有用的解决方案。基本上,当您致电setOnTouchListener(...)时,您应传递new OnTouchListener() {...}的值。注意:我使用new View.OnTouchListener() {...}(从声明中删除View.)。

我确信拥有比我更好的Java经验的人可以解释为什么会这样,但我想这与继承模型或这些方面的解释有关。