Я создаю приложение для замены лаунчера/начального экрана и заметил, что все лаунчеры позволяют пользователю нажать кнопку «Домой», чтобы перейти к первому экрану лаунчера. Таким образом, очевидно, что можно прослушивать домашний ключ для приложений, заменяющих дом, но я не смог понять, как это сделать.
Как я могу прослушивать клавишу «домой» и запускать setCurrentItem(0), когда пользователь нажимает «домой», находясь внутри моей панели запуска?
РЕДАКТИРОВАТЬ
У меня пока два варианта:
@Override
public void onPause() {
super.onPause();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if(!this.isFinishing())
{
if (sharedPrefs.getBoolean("user_called", false))
{
// Si fue por una llamada del usuario eliminar bandera y no hacer nada
Utils.setUserCalled(getApplicationContext(), false);
}
else
{
mPager.setCurrentItem(0);
}
}
}
Другой метод таков:
Boolean appState = false;
@Override
public void onPause() {
super.onPause();
appState = false;
}
@Override
public void onResume() {
super.onResume();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if(!appState)
{
if (sharedPrefs.getBoolean("user_called", false))
{
// Si fue por una llamada del usuario eliminar bandera y no hacer nada
Utils.setUserCalled(getApplicationContext(), false);
}
else
{
mPager.setCurrentItem(0);
}
}
}
Оба используют флаг с именем user_call, чтобы знать, начал ли пользователь вызов. Моя проблема сейчас в том, что оба метода не работают, когда звонит телефон. Есть ли способ отфильтровать эти случаи?