Це вже деякий час зводить мене з розуму.
Чи є спосіб надійно визначити, чи натиснута кнопка додому в додатку для Android?
Якщо цього не вдасться, чи існує надійний спосіб сказати, що призвело до того, що діяльність перейшла до onPause? тобто чи можемо ми виявити, чи це було спричинено запуском нової діяльності або натисканням кнопки назад / додому.
Одне з пропозицій, яке я бачив, - переосмислити функцію onPause () і викликати isFinishing (), але це повернеться помилковим при натисканні кнопки додому так само, як це було б, якщо починається нова діяльність, і це не зможе розрізнити обидві.
Будь-яка допомога дуже цінується.
** Оновлення **: Дякую @ голодуючим на android за це посилання: https://nishandroid.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);
Отже, здається, всупереч поширеній думці, насправді ви можете вислухати ключ від дому. Турбує те, що ви можете повернути помилкове значення і змусити домашній ключ нічого не робити.
Оновлення . Як очікується, у цьому є деякі побічні наслідки - схоже, що вбудовані відео та карти Google не відображаються з увімкненим цим режимом.
Оновлення : нібито цей хак більше не працює з Android 4.0 і далі
Activity.onUserLeaveHint()
.