Это уже какое-то время сводит меня с ума.
Есть ли способ надежно определить, была ли нажата кнопка «Домой» в приложении для Android?
Если это не удается, существует ли надежный способ узнать, что привело к переходу действия в onPause? То есть можем ли мы определить, было ли это вызвано запуском нового действия или нажатием кнопки возврата / возврата.
Одно из предложений, которое я видел, - переопределить onPause () и вызвать isFinishing (), но это вернет false при нажатии кнопки «Домой», как если бы начиналось новое действие, поэтому при этом не удается провести различие между ними.
Любая помощь очень ценится.
** Обновление **: Спасибо @ android-hungry за эту ссылку: http://nisha113a5.blogspot.com/
Преодоление следующего метода:
@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)
{
//The Code Want to Perform.
}
});
I Я не уверен, есть ли у этой строки какие-либо побочные эффекты:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Таким образом, может показаться, что вопреки распространенному мнению, на самом деле вы можете прослушивать клавишу Home. К сожалению, вы можете вернуть false, и домашний ключ ничего не сделает.
Обновление : Как и ожидалось, здесь есть некоторые побочные эффекты - кажется, что встроенные видео и карты Google не отображаются в этом режиме.
Обновление : Предположительно, этот хак больше не работает начиная с Android 4.0
клавиша Home Android, обработанная слоем платформы, Вы не можете способный обработать это на уровне прикладного уровня. Поскольку действие кнопки "Домой" уже определяется в ниже уровня. Но Если Вы разрабатываете свой пользовательский ROM, тогда Это могло бы быть возможно. Google ограничил функции переопределения КНОПКИ "ДОМОЙ" из-за соображений безопасности.