Это уже давно сводит меня с ума.
Есть ли способ надежно определить, была ли нажата кнопка «Домой» в приложении для Android?
В противном случае, существует ли надежный способ сообщить, что послужило причиной перехода активности в onPause?т.е. мы можем определить, было ли это вызвано запуском новой активности или нажатием back / home.
Одно из предложений, которое я видел, это переопределить onPause () и вызвать isFinishing (), но при возврате будет возвращено falseКнопка «Домой» так же, как и в случае запуска нового действия, поэтому не удается различить их.
Любая помощь очень ценится.
** Обновление **: Спасибо @ android-hungryдля этой ссылки: http://nisha113a5.blogspot.com/
Перечисление следующего метода:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Тогда будет запущено следующее событие для нажатий кнопок home:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
I 'Я не уверен, есть ли какие-либо побочные эффекты с этой линией:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Так что может показаться, что вопреки распространенному мнению, вы можете прислушиваться к ключу home.Тревожно, вы можете вернуть false и сделать так, чтобы домашний ключ ничего не делал.
Обновление : Как и ожидалось, есть некоторые побочные эффекты - кажется, что встроенные видео и карты Google не видныс включенным этим режимом.
Обновление : возможно, этот хак больше не работает с Android 4.0 и выше