着信 SMS をリッスンする BroadcastReceiver があります。メッセージが特定の送信者からのものである場合、BroadcastReceiver は次のコードでアプリを起動します。
final Intent activityIntent = new Intent(context, MainActivity.class);
activityIntent.putExtra("smsChallenge", smsText);
activityIntent.putExtra("smsSenderNumber", senderMobilNumber);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(activityIntent);
アプリの MainActivity (つまり)で、次のコードを使用して、インテントからonCreate()
値を抽出し、抽出後に削除します。smsChallenge
Bundle extras = getIntent().getExtras();
if (extras != null) {
smsChallenge = extras.getString("smsChallenge");
extras.remove("smsChallenge");
}
したがって、私のアプリは SMS から開始され、正常に動作します...しかし、[戻る] ボタンを押してアプリケーションを再起動することを選択した場合 (つまり、Taskmanager を介して)、値smsChallenge
はまだ bundle にありextras
ます。つまり、再起動したアプリは、新しい SMS が原因で再起動したと考えていますが、これは正しくありません...
[戻る] ボタンを使用してアプリを再起動したときに、バンドルからキー値を削除しても機能しないように見える理由はありますか?