Intereting Posts
Как вы можете настроить мягкую клавиатуру EditText для использования номеров вначале, но все же разрешить текст? Динамически изменить предел ссылки на запрос Firebase Query на Android Для Android SDK требуется Android Developer Toolkit версии 14.0.0 или выше. … Пожалуйста, обновите ADT до последней версии Максимальный номер потока для одного приложения? Циклическое наследование и интерфейсы – класс A не может реализовать интерфейс класса B, тогда как класс B реализует интерфейс Как программно удалить существующее правило, которое было определено в XML? Можно ли уточнить использование <include> и <merge> Настройка турецкого и английского языков: перевод турецких символов на латинские эквиваленты Android: запись и получение объекта Мой ADT Bundle говорит: «Не удалось найти папку SDK» Как я могу сделать / объединить скриншот из карты Google v2 и компоновку xml как программно? Как реализовать logout beaviour в android Когда мы должны использовать LAYER_TYPE_HARDWARE Удалить серийный индикатор / сюжетную легенду AndroidPlot Удаление файла Android не работает

Метод вызова при нажатии кнопки home на андроиде

Поэтому у меня есть этот метод в одном из моих Android-упражнений:

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { Log.d("Test", "Back button pressed!"); } else if(keyCode == KeyEvent.KEYCODE_HOME) { Log.d("Test", "Home button pressed!"); } return super.onKeyDown(keyCode, event); } 

Но, несмотря на то, что KEYCODE_HOME действителен, метод журнала никогда не срабатывает. Однако это работает для кнопки «Назад». Кто-нибудь знает, почему это так и как заставить это работать?

благодаря

Solutions Collecting From Web of "Метод вызова при нажатии кнопки home на андроиде"

Кнопка «Домой» – очень опасная кнопка для переопределения, и из-за этого Android не позволит вам переопределить ее поведение так же, как вы делаете кнопку BACK.

Взгляните на это обсуждение.

Вы заметите, что кнопка дома, похоже, реализована как призыв к намерениям, поэтому вам придется добавить категорию намерений в свою деятельность. Затем, в любое время, когда пользователь ударит по дому, ваше приложение будет отображаться как опция. Вы должны подумать над тем, что именно вы хотите выполнить с помощью кнопки «домой». Если он не заменит домашний экран устройства по умолчанию, я буду опасаться перегрузки кнопки HOME, но это возможно (за обсуждение в приведенном выше разделе).

Мне потребовался почти месяц, чтобы пройти через это. Сейчас я решил эту проблему. В вашей функции onPause () вы должны включить следующее условие if:

  if (this.isFinishing()){ //Insert your finishing code here } 

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

Надеюсь, поможет!

Я обнаружил, что когда я нажимаю кнопку HOME, вызывается метод onStop (). Вы можете использовать следующий фрагмент кода для его мониторинга:

 @Override protected void onStop() { super.onStop(); Log.d(tag, "MYonStop is called"); // insert here your instructions } 

Кнопка HOME не может быть перехвачена приложениями. Это поведенческое поведение в Android. Причина заключается в том, чтобы запретить злонамеренным приложениям получать контроль над вашим телефоном (если пользователь не может нажать кнопку «Назад» или «домой», он, возможно, никогда не сможет выйти из приложения). Кнопка «Домой» считается безопасной зоной пользователя и всегда запускает настроенное домашнее приложение пользователя.

Единственное исключение из вышеперечисленного – любое приложение, настроенное как домашняя замена. Это означает, что для соответствующего действия в AndroidManifest.xml указано следующее:

 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

При нажатии кнопки «домой» onNewIntent текущее действие onNewIntent текущего домашнего приложения.

У меня есть простое решение при обращении к домашнему нажатию кнопки. Вот мой код, это может быть полезно:

 public class LifeCycleActivity extends Activity { boolean activitySwitchFlag = false; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { activitySwitchFlag = true; // activity switch stuff.. return true; } return false; } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public void onPause(){ super.onPause(); Log.v("TAG", "onPause" ); if(activitySwitchFlag) Log.v("TAG", "activity switch"); else Log.v("TAG", "home button"); activitySwitchFlag = false; } public void gotoNext(View view){ activitySwitchFlag = true; startActivity(new Intent(LifeCycleActivity.this, NextActivity.class)); } } 

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

Используйте onPause() чтобы сделать то, что вы хотите сделать на домашней кнопке.

KeyEvent.KEYCODE_HOME может быть перехвачен.

Было бы неплохо, если бы это было возможно.

(Edit) : Я просто вижу, что Никс отвечает, что совершенно отлично;)

Я также некоторое время боролся с кнопкой HOME. Я хотел остановить / пропустить фоновый сервис (который проверяет местоположение), когда пользователь нажимает кнопку HOME.

Вот что я реализовал как «хакерское» решение;

Сохранить состояние приложения в SharedPreferences с помощью логического значения

По каждому виду деятельности

OnResume () -> set appactive = true

OnPause () -> set appactive = false

И фоновая служба проверяет appstate в каждом цикле, пропускает действие

IF appactive = false

Он работает хорошо для меня, по крайней мере, не истощает батарею больше, надеюсь, что это поможет ….