BroadcastReceiver的意图无法正常工作

时间:2012-01-13 12:44:28

标签: android android-intent broadcastreceiver

如何从额外的意图中“清除”值?

的活动:

@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中更改值并再次运行应用程序,我会得到与第一次启动时相同的值。我尝试从我的手机/虚拟机删除应用程序,清理项目,但问题仍然存在:(

有人帮帮我吗?

2 个答案:

答案 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