我有一个可以收听传入短信的 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 中(即 in onCreate()
),我smsChallenge
从意图中提取值并在提取后使用以下代码删除它:
Bundle extras = getIntent().getExtras();
if (extras != null) {
smsChallenge = extras.getString("smsChallenge");
extras.remove("smsChallenge");
}
所以我的应用程序从 SMS 启动并运行良好......但如果我选择按下 BACK 按钮并重新启动应用程序(即通过任务管理器),该值smsChallenge
仍在 bundle 中extras
。这意味着,我重新启动的应用程序认为它是由于一条不正确的新短信而重新启动的......
任何想法为什么在使用 BACK 按钮并再次重新启动应用程序时从包中删除键值似乎不起作用?