Search code examples
androidandroid-webviewandroid-keypad

How to detect key event in webView?


I find out that the code below will only work for hardware buttons

webView.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if(!v.hasFocus()){
                v.requestFocus();
            }
            return false;
        }
    });

onKey() method not getting called.


Solution

  • Try something like:

     @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if(event.getAction() == KeyEvent.ACTION_DOWN){
                switch(keyCode)
                {
                case KeyEvent.KEYCODE_BACK:
                    if(webView.canGoBack()){
                        webView.goBack();
                    }else{
                        finish();
                    }
                    return true;
                }
    
            }
            return super.onKeyDown(keyCode, event);
        }