0

ワンタイムログインシステムを設計しようとしています。

  • loginActivity で、ユーザーは電話番号を入力し、SMS でシークレット コードを送信します。

  • ConfirmationActivity で、ユーザーは秘密コードを入力します。

シークレットコードが成功したら、finishconfirmationActivity と 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 に二度とアクセスできないようになることを願っています。そして、アプリを閉じて再起動すると、それらの 2 つのページがスキップされ、ユーザーは直接ホームページに移動します。

注:onActivityResultメソッドが呼び出されないようです。そこにいくつかのprintln呼び出しを配置し​​ましたが、LogCatに出力されることはありません。

免責事項: 前回、質問をしてコード スニペットを見せたとき、ある回答者が気を散らして、質問に答える代わりにスニペットについて話し始めました。ここのスニペットは、私が試したことを示すためのものです。明らかに、それは問題を解決していません。ありがとうございました。

4

1 に答える 1

1

考えられる解決策の1つは次のとおりです。

LoginActivity でアプリを開く代わりに、FirstActivity という名前の新しいアプリを作成します。

このアクティビティでは、sharedPreferences でフラグを設定したかどうかを確認します。

  1. このチェックが true の場合、ログインしたアクティビティに進みます。

  2. このチェックが false を返した場合は、LoginActivity を開始します。ユーザーが「シークレット」を正常に入力した後、sharedPreferences にフラグを設定する必要があります。次にユーザーがアプリを開くと、sharedPreferences のフラグが設定され、ユーザーが既に登録されていることがわかります。

質問は?以下のコメント

于 2013-04-13T14:12:02.953 に答える