В 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", оно прекрасно справляется с этим сценарием.