Я разрабатываю приложение для Android, в котором, когда приложение находится в фоновом режиме, оно отображает в строке состояния уведомление. Использование onUserLeaveHint
Я могу определить, когда пользователь нажимает кнопку HOME, но тот же самый прослушиватель событий также запускается, когда пользователь нажимает кнопку BACK. Как я могу обнаружить только нажатия кнопки HOME?Detect HomeButton нажал Android до onBackPressed
ответ
Мне жаль говорить, но все предложенные ответы устарели и некоторые из них совершенно неправильно.
Перехват HOME непосредственно был заблокирован назад на Froyo из-за проблем с безопасностью и страхами вредоносного ПО (если вы можете перехватить HOME, вы можете попробовать и захватить устройство).
Единственное решение, которое я знаю о том, что разделяет BACK из HOME, - это перехват прослушивателя событий onNewIntent()
.
onNewIntent()
увольняется, когда приложение запущено, и получает другое намерение запускаться. Вот почему вы получите его, когда HOME нажата.
Когда нажата кнопка BACK, ваше приложение не получит намерения. Все, что происходит, это то, что приложения поверх вас удалены. Таким образом, ваше приложение появляется из заднего стека только с вызовом onResume().
Так вот как вы можете это сказать.
Также упоминается here. Goodluck.
Когда пользователь нажимает назад, вы должны позвонить по телефону onBackPresssed
. Вы можете использовать это, чтобы установить флаг, чтобы вы могли определить во время onUserLeaveHint
, если была нажата кнопка «Назад». Не забудьте очистить флаг.
Я пробую это решение. Но иногда он вызывает onUserLeaveHint перед onBackPressed, поэтому я не могу установить флаг. –
Вы можете просто отключить кнопку «Назад» для этой конкретной страницы. Вот что работает для меня:
@Override
public void onBackPressed() {
}
Мне нужно onBackPressed ... –
Переопределение 'onBackPressed' противоречит списку приложений для Android (http://developer.android.com/distribute/essentials/quality/core.html). Приложение не переопределяет ожидаемую функцию значок системы (например, кнопка «Назад»). –
Я нашел решение, используя onStop()
и onResume()
метод. Вот мой код
@Override
public void onBackPressed() {
Intent intent = new Intent(this, PagerActivity.class);
startActivity(intent);
finish();
}
/* Handle notification create/destroy */
private Boolean notificationCreated = false;
@Override
protected void onStop() {
Utils.createNotification();
notificationCreated = true;
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
if (notificationCreated)
{
Utils.cancelNotification();
notificationCreated = false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (notificationCreated) {
Utils.cancelNotification();
notificationCreated = false;
}
}
- 1. java detect нажал кнопки
- 2. Android homeButton получает ошибку
- 3. Android ViewDrawer homebutton
- 4. Android onBackPressed
- 5. using onBackPressed in android
- 6. Android onBackPressed избежать выхода
- 7. Android Fragment onBackPressed display alertDialog
- 8. Android rereate Fragment onBackPressed
- 9. Android Fragment InterstitialAd onBackPressed
- 10. Android onBackPressed() в фрагменте
- 11. Android onBackPressed внутри Фрагмент
- 12. App убит onBackPressed android
- 13. onBackPressed с фрагментами Android
- 14. OnBackPressed в Xamarin Android
- 15. Android onBackPressed issue
- 16. Android: onBackPressed() не работает?
- 17. Android: ViewFlipper with onBackPressed
- 18. Android onBackPressed() не называется?
- 19. Android Overriding onBackPressed()
- 20. onBackPressed function in android
- 21. Android resetting MediaPlayer onBackPressed
- 22. Android - onBackPressed() не дозвонились
- 23. Android: onBackPressed() уничтожить всю память?
- 24. Android - onBackPressed, чтобы отключить приложение
- 25. Detect, если пользователь нажал Отмена в диалоговом окне клоне
- 26. Фрагмент предпочтения Android OnBackPressed Crash
- 27. Android - Выполнение функции после onBackPressed();
- 28. Android onBackPressed - сила родителя OnCreate
- 29. Android NavigationView название изменение onBackPressed
- 30. Android MediaPlayer - onBackPressed() не работает
Вы пробовали переопределить onKeyDown и проверить KeyEvent.KEYCODE_HOME? – Breadbin
@Breadbin 'KeyEvent.KEYCODE_HOME' не перехватывается в' onKeyDown' со времен Froyo и Gingerbread. –