Это уже некоторое время подталкивает меня орехами.
Есть ли способ надежного обнаружения, если кнопка home нажата в приложении Android?
В противном случае, есть ли надежный способ узнать, что вызвало активность в onPause? i.e Можем ли мы обнаружить, было ли это вызвано запуском нового действия или нажатием кнопки "Назад/Дом".
Одно из предположений, которое я видел, - это переопределить onPause() и вызвать isFinishing(), но при нажатии кнопки home это будет возвращать 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.
}
});
Я не уверен, есть ли какие-либо побочные эффекты в этой строке:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Таким образом, казалось бы, вопреки распространенному мнению, вы действительно можете услышать домашний ключ. Беспокойно, вы можете вернуть false, а домашний ключ ничего не делает.
Обновление: Как и ожидалось, в этом есть некоторые побочные эффекты - кажется, что встроенные видео и карты Google не отображаются при включенном режиме.
Обновление: Предположительно, этот хак уже не работает с Android 4.0 вперед