To już od jakiegoś czasu doprowadza mnie do szału.
Czy istnieje sposób na niezawodne wykrycie, czy przycisk Home został naciśnięty w aplikacji na Androida?
Jeśli to się nie powiedzie, czy istnieje skuteczny sposób na stwierdzenie, co spowodowało rozpoczęcie działania onPause? tj. czy możemy wykryć, czy było to spowodowane uruchomieniem nowej aktywności lub naciśnięciem przycisku wstecz / home.
Jedną z sugestii, które widziałem, jest zastąpienie onPause () i wywołanie isFinishing (), ale po naciśnięciu przycisku home zwróci to fałsz, tak jak w przypadku rozpoczęcia nowej czynności, więc nie rozróżnia tych dwóch.
Każda pomoc bardzo doceniona.
** Aktualizacja **: dzięki @ android-hungry za ten link: https://nishandroid.blogspot.com/
Pomijając następującą metodę:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Następnie następujące zdarzenie zostanie zwolnione z powodu naciśnięcia przycisku głównego:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Nie jestem pewien, czy są jakieś skutki uboczne z tą linią:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Wydawałoby się więc, że wbrew powszechnemu przekonaniu można faktycznie posłuchać klucza domowego. Niepokojące jest to, że możesz zwrócić fałsz i pozwolić, aby klucz domowy nic nie robił.
Aktualizacja : zgodnie z oczekiwaniami są pewne skutki uboczne - wygląda na to, że osadzone filmy i mapy Google nie są widoczne przy włączonym tym trybie.
Aktualizacja : podobno ten hack nie działa już od Androida 4.0
Activity.onUserLeaveHint()
.