Вопрос по android – Как поймать нажатие кнопки «Домой» в Android?

1

Из ответов в stackoverflow я обнаружил, что кнопку Home можно переопределить? Но я нашел приложение на андроид маркете под названием "Mxplayer" где вы можете заблокировать все кнопки во время воспроизведения видео. Как они это делают? Можем ли мы переопределить кнопку домой в Android?

Ваш Ответ

2   ответа
12

Переопределите метод ниже в вашей деятельности,

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);           
}

А теперь обработайте ключевое событие, как это,

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

   if(keyCode == KeyEvent.KEYCODE_HOME)
    {
     Log.i("Home Button","Clicked");
    }
   if(keyCode==KeyEvent.KEYCODE_BACK)
   {

        finish();
   }
return false;

};

затем попробуйте без переопределения onKeyDown. Сделайте ваши вещи в onAttachedWindow () и посмотрите, работает ли ti
Но это отменяет поведение кнопки home по умолчанию. Даже если я используюreturn super(keyCode, event) вместоreturn false вonKeyDown.
Я получаю следующую ошибку даже с & quot; DISABLE_KEYGUARD & quot; набор разрешений. 4.1 исправил эту брешь в безопасности? android.view.WindowManager $ BadTokenException: невозможно добавить окно [email protected] - в этом типе окна отказано в разрешении
Я хочу поймать нажатие кнопки «Домой», чтобы сделать что-то связанное с отслеживанием, но эффект для пользователя должен быть таким же.
@ Грэм, я получаю то же самое для версий ICS и желейных бобов, у тебя есть способ решить эту проблему?
-1

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_HOME)) {
        //do nothing
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
Это не работает. user1323210

Похожие вопросы