如何在Android中获取WebView的输入区点击回调

如何在Android中获取WebView的输入区点击回调,android,webview,Android,Webview,我正在用Android开发键盘。键盘包含一个网络视图。当用户在WebView中单击网页的输入区域时,应显示键盘面板。在我检查了WebView的所有回调之后,我找不到任何调用的回调。我怎样才能知道用户在点击输入区域并执行某些操作?尝试检查: public class WebViewClicker extends Activity implements OnTouchListener, Handler.Callback { private static final int CLICK_ON

我正在用Android开发键盘。键盘包含一个网络视图。当用户在WebView中单击网页的输入区域时,应显示键盘面板。在我检查了WebView的所有回调之后,我找不到任何调用的回调。我怎样才能知道用户在点击输入区域并执行某些操作?

尝试检查:

public class WebViewClicker extends Activity implements OnTouchListener, Handler.Callback {

    private static final int CLICK_ON_WEBVIEW = 1;
    private static final int CLICK_ON_URL = 2;

    private final Handler handler = new Handler(this);

    private WebView webView;
    private WebViewClient client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web_view_clicker);

        webView = (WebView)findViewById(R.id.web);
        webView.setOnTouchListener(this);

        client = new WebViewClient(){ 
            @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
                handler.sendEmptyMessage(CLICK_ON_URL);
                return false;
            } 
        }; 

        webView.setWebViewClient(client);
        webView.setVerticalScrollBarEnabled(false);
        webView.loadUrl("http://www.example.com");
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (v.getId() == R.id.web && event.getAction() == MotionEvent.ACTION_DOWN){
            handler.sendEmptyMessageDelayed(CLICK_ON_WEBVIEW, 500);
        }
        return false;
    }

    @Override
    public boolean handleMessage(Message msg) {
        if (msg.what == CLICK_ON_URL){
            handler.removeMessages(CLICK_ON_WEBVIEW);
            return true;
        }
        if (msg.what == CLICK_ON_WEBVIEW){
            Toast.makeText(this, "WebView clicked", Toast.LENGTH_SHORT).show();
            return true;
        }
        return false;
    }
    }
我发现WebView会将触摸事件发送给OnTouchListener。它确实有自己的onTouchEvent方法,但我似乎只使用该方法获取MotionEvent.ACTION\u移动

因此,考虑到我们可以在已注册的触摸事件侦听器上获取事件,剩下的唯一问题是,当用户单击URL时,如何规避您希望对触摸执行的任何操作


这可以通过一些奇特的处理程序的步法来实现,方法是发送一条延迟的触摸消息,然后如果触摸是由用户单击URL引起的,则删除这些触摸消息。

在您的页面上使用javascript和javascript界面绑定webview@njzk2网页不像google.com那样受到控制。我们不能在页面中添加javascript。当然可以。加载后,您可以在页面上执行js。这仅适用于单击URL的用户。我需要的是在用户单击输入区域时调用回调。请检查它