如何从额外的意图中“清除”值?
的活动:
@Override
public void onCreate(Bundle savedInstanceState) {
...
Intent intent = new Intent(this, MyBroadcastReceiver .class);
intent.putExtra("valueOne", "valOne");
intent.putExtra("valueTwo", true);
intent.putExtra("valueThree", 1);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5 * 1000), pendingIntent);
...
}
广播接收器:
@Override
public void onReceive(Context context, Intent intent) {
...
String valueOne= intent.getStringExtra("valueOne");
Boolean valueTwo= intent.getBooleanExtra("valueTwo", false);
Integer valueThree= intent.getIntExtra("valueThree", 0);
// Log.i("info", valueOne) >> valOne
// Log.i("info", valueTwo.toString()) >> false
// Log.i("info", valueThree.toString()) >> 1
...
}
如果我在Activity中更改值并再次运行应用程序,我会得到与第一次启动时相同的值。我尝试从我的手机/虚拟机删除应用程序,清理项目,但问题仍然存在:(
有人帮帮我吗?
答案 0 :(得分:4)
在Pending Intent声明中尝试设置以下标志:
PendingIntent.FLAG_UPDATE_CURRENT
在您的情况下,它应该是以下内容:
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_UPDATE_CURRENT);
答案 1 :(得分:2)
首先,我建议您在此处格式化代码。这样人们就会很高兴阅读您的问题代码。上面的代码列表不会将任何BroadcastReceiver注册到系统。您最好查看ApiDemo了解更多详情。
另见this one