Отключить активность Android на кнопке "Назад"

У меня есть экран входа в систему, в котором пользователь входит в систему. После этого пользователь будет доставлен на главный экран.

Теперь моя проблема в том, что при нажатии кнопки "Назад" пользователь снова появляется на экране входа в систему.

Есть ли способ исправить эту проблему?

Я попытался позвонить finish() сразу после startActivity(), но это только вызвало сбой приложения и не показалось хорошим решением.

Ответы

Ответ 1

В манифесте добавьте android:noHistory="true" в качестве атрибута активности входа.

Ответ 2

Вызов finish() после startActivity() - это путь. Вы должны исследовать причину сбоя в этом случае.

Ответ 3

Рассмотрите возможность запуска основного приложения, а затем запуск экрана входа в систему как пользовательский модальный диалог.

Советы для модального запуска:

  • builder.setCancelable(false)
  • НЕ используйте статический метод и show show(), как в примерах EULA с открытым исходным кодом. Эта реализация не выполняется, если пользователь поворачивает телефон. Вместо этого используйте стандартный шаблон onCreateDialog, getInstanceMyDialog, showDialog (int).
  • Модальный диалог может возвращать данные, если вы вызываете его с помощью startActivityForResult или модальный диалог может записывать в файл пользовательских настроек.

Ответ 4

  1. Если вы никогда больше не возвращаетесь к действиям при входе в систему, добавьте android:noHistory=true в манифест.
  2. Если вы хотите вернуться к входу в систему только из определенного действия (скажем, действия с паролем), переопределите onBackPressed():

    @Override public void onBackPressed() { super.onBackPressed(); }

    вашего "главного экрана", который появляется после действия "Логин/пароль" с кодом ниже,

    Intent homeIntent = Intent(Intent.ACTION_MAIN); homeIntent.addCategory( Intent.CATEGORY_HOME ); homeIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP; startActivity(homeIntent);

    это сведет ваше приложение к минимуму при повторном нажатии и не вернется к активности входа в систему/ввода пароля.

  3. Если вы хотите убить приложение, используйте

    android.os.Process.killProcess(android.os.Process.myPid());

  4. выйти из приложения

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){ this.finishAffinity() }