2013-04-13 1 views
0

Я пытаюсь создать единую систему входа в систему.андроид один раз система входа в систему

  • На loginActivity пользователь вводит номер телефона, к которому я отправляю секретный код через SMS

  • На confirmationActivity пользователь вводит секретный код.

Если секретный код успешен, я хочу finish как confirmationActivity и loginActivity. Для того, чтобы сделать это с loginActivity я

Intent intent = new Intent(this, ConfirmationActivity.class); 
startActivityForResult(intent, EXIT_CODE); 

Затем снова loginActivity я называю

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
    if (requestCode == EXIT_CODE) { 
     finish(); 
    } 
    } 
} 

Чтобы проверить работает ли моя система, после регистрации, я нажимаю на кнопку назад:

  • Ожидаемое поведение: Невозможно вернуться или закрыть приложение

  • Фактическое поведение: вернуться к loginActivity (обратите внимание, что он пропускает confirmationActivity)

Моя надежда состоит в том, что как только пользователь успешно регистрирует они никогда не должны снова получить доступ к либо confirmationActivity или loginActivity. И когда они закрывают мое приложение и перезапускают его, он пропускает эти две страницы и выводит пользователя непосредственно на домашнюю страницу.

Примечание: похоже, что метод onActivityResult никогда не называется. Я размещаю несколько вызовов println, и они никогда не печатаются на LogCat.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: В прошлый раз, когда я задал вопрос и показал фрагмент кода, один респондент отвлекся и начал говорить об этом фрагменте, вместо того чтобы обратиться к этому вопросу. Отрывок здесь просто для того, чтобы показать, что я пробовал. Очевидно, это не решило проблему. Спасибо.

ответ

1

Одним из возможных решений может быть:

Вместо того, чтобы открыть приложение с LoginActivity создать новый под названием FirstActivity.

В этом упражнении вы проверяете, установлен ли флаг в sharedPreferences.

  1. Если эта проверка верна, то продолжайте свою регистрацию.

  2. Если эта проверка возвращает ложное начало LoginActivity. После того, как Пользователь успешно ввел «секрет», вы должны установить флаг в sharedPreferences. В следующий раз, когда пользователь откроет приложение, будет установлен флаг в sharedPreferences, вы узнаете, что пользователь уже зарегистрирован.

Есть вопросы? комментарий ниже

+0

Спасибо.Я думал об этом, но он по-прежнему оставляет проблему с тем, чтобы пользователь не возвращался к LoginActivity в тот момент, когда они заканчивали регистрацию (нажав кнопку «Назад»). +1 –

+0

Решения для этого: отключить откидную панель (очень плохое решение), переопределить функцию onbackpressed и соответственно выполнить действия или управлять стеком действий, например. добавление флага FLAG_ACTIVITY_NO_HISTORY к вашему намерению или объявление noHistory = true в вашем манифесте – Tobrun