Как закончить() нажатие кнопки "Активность на дому" в андроиде?

Я хочу закончить кнопку "Активность на домашней кнопке". У меня есть код ниже, но не получается его событие click. но все равно не получить clickevent

public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (event.getAction() == KeyEvent.ACTION_DOWN) {
 switch (keyCode) {
 case KeyEvent.KEYCODE_HOME:
 System.out.println("Home clicked....");
 return true;
 }
 }
 return super.onKeyDown(keyCode, event);
 }
8 ответов

Когда нажата кнопка "Домой", в вашей деятельности вызывается метод onStop. Итак, вы можете добавить finish(); в метод onStop, чтобы уничтожить вашу активность. В конце концов метод onDestroy будет поднят, чтобы подтвердить, что ваша активность завершена.


Вы не можете обработать кнопку "Главная".

Вы можете попробовать переопределить некоторые из этих методов: onStop, onUserLeaveHint

Вы уверены, что вам нужно это сделать? Если вы можете сохранить свое текущее состояние через onPause/onSaveInstanceState и восстановить его позже, OS должна иметь возможность обрабатывать жизненный цикл Activity и завершать его, если это необходимо. Можете ли вы сказать нам, что мешает вам это делать?:)


public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK) {
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent); 
 moveTaskToBack(false);
 return true;
 }
 return super.onKeyDown(keyCode, event);
}


завершите свою деятельность на onUserLeaveHint() без этого метода, когда пользователь нажимает кнопку домашнего ключа, поэтому просто переопределяйте этот метод и завершите вызов() в этом методе.


Завершите работу, когда кнопка "Дом" нажата. Ее работа идеально подходит для меня.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
 if ((keyCode == KeyEvent.KEYCODE_HOME)) {
 Log.v("hari", "KEYCODE_HOME");
 onUserLeaveHint();
 return true;
 }
 if ((keyCode == KeyEvent.KEYCODE_BACK)) {
 return true;
 }
 if ((keyCode == KeyEvent.KEYCODE_MENU)) {
 return true;
 }
 return false;
}
public void onUserLeaveHint() { // this only executes when Home is selected.
 super.onUserLeaveHint();
 if (!isFinishing()) {
 Log.v("hari", "if condition working");
 finish();
 }
}

но иногда кнопка возврата не работает при использовании этого кода...


Вы можете закончить действие, когда действие будет перенесено на передний план из значка на главном экране/рабочем столе. См. Здесь: https://groups.google.com/forum/#!topic/android-developers/D9CyrSzIm5c

В основном, он говорит, чтобы добавить android: clearTaskOnLaunch = "true" к вашей активности.


Вы можете поместить финиш() в onPauseMethod таким образом, как только действие домашней кнопки перестает быть основной активной текущей активностью и входит в метод onPause, это остановит эту активность.


см. это

public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (event.getAction() == KeyEvent.ACTION_DOWN) {
 switch (keyCode) {
 case KeyEvent.KEYCODE_HOME:
 finish();
 System.out.println("Home clicked....");
 return true;
 }
 }
 return super.onKeyDown(keyCode, event);
}

licensed under cc by-sa 3.0 with attribution.