У меня есть BroadcastReceiver, который прослушивает входящие SMS. Если сообщение от определенного отправителя, 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 и работает нормально... Но если я нажму кнопку BACK и перезапустил приложение (т.е. через TaskManager), значение smsChallenge
все еще находится в пакете extras
,
Это означает, что мое перезапущенное приложение думает, что оно перезапущено из-за нового SMS, которое не соответствует действительности.
Любые идеи, почему удаление ключевого значения из пакета, похоже, не работает при использовании кнопки BACK и перезапуска приложения снова?