1

由于单击链接(链接调用函数),我想在 web 视图中调用 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”的事情吗?

谢谢。

4

2 回答 2

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;

                }
于 2012-07-26T10:34:53.600 回答
0

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

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

于 2012-08-14T12:55:14.173 回答