В Android отключить только кнопку HomeKey

Привет, я ищу отключить только HomeKey в Android. Что я пытаюсь сделать, так это

@Override
    public void onAttachedToWindow() {
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {



        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {

            return true;
        }

        if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
                        //action
        }
        if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
                        //action
        }
        if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER) {
            //action
        }

        return false;
    }

Но при этом моя кнопка "назад" тоже отключается. Есть ли способ просто отключить HomeKey в Android. Ответьте, пожалуйста.

2 ответа

В документации говорится:

Домашний ключ. Этот ключ обрабатывается платформой и никогда не доставляется приложениям.

Более конкретно, ключ потребляется PhoneWindowManager в методе interceptKeyBeforeDispatching(..), В этом методе ключ обрабатывается и используется, что означает, что Android не позволяет переопределить эту функцию.

ОБНОВИТЬ:

Причина, по которой ваше обратное поведение больше не работает, заключается в том, что вы сами справились с этим. Ключ входит в onKeyDown-метод, и вы можете использовать ключ (да или нет), возвращая истину или ложь. Реализуя это:

 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {

       return true;
 }

Вы прямо заявляете, что обработали клавишу Back в своем Activity что также означает, что поведение "возврата" по умолчанию отменено. Чтобы восстановить первоначальное поведение, используйте return super.onKeyDown(keyCode, event);

Да, это возможно. В вашем манифесте, при замедлении вашей активности, замените

<category android:name="android.intent.category.LAUNCHER" />

с

<category android:name="android.intent.category.HOME" />

Обратите внимание, что с этим изменением ваше приложение не будет отображаться в разделе "Все приложения". Кроме того, пользователь должен установить приложение в качестве домашнего экрана по умолчанию. Попробуйте приложение "Toddler Lock", оно прекрасно справляется с этим сценарием.

Другие вопросы по тегам