Multiple calls to AlarmManager.setRepeating deliver the same Intent/PendingIntent extra values, but

Posted by Chris Boyle on Stack Overflow See other posts from Stack Overflow or by Chris Boyle
Published on 2010-05-16T15:22:55Z Indexed on 2010/05/16 15:30 UTC
Read the original article Hit count: 363

Filed under:
|
|
|

Solved while writing this question, but posting in case it helps anyone:

I'm setting multiple alarms like this, with different values of id:

AlarmManager alarms = (AlarmManager)context.getSystemService(
        Context.ALARM_SERVICE);
Intent i = new Intent(MyReceiver.ACTION_ALARM);  // "com.example.ALARM"
i.putExtra(MyReceiver.EXTRA_ID, id);  // "com.example.ID", 2
PendingIntent p = PendingIntent.getBroadcast(context, 0, i, 0);
alarms.setRepeating(AlarmManager.RTC_WAKEUP, nextMillis, 300000, p);  // 5 mins

...and receiving them like this:

public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(ACTION_ALARM)) {
        // It's time to sound/show an alarm
        final long id = intent.getLongExtra(EXTRA_ID, -1);

The alarm is delivered to my receiver at the right times, but often with EXTRA_ID set to the wrong value: it's a value that I have used at some point, just not the one that I wanted delivered at that particular time.

© Stack Overflow or respective owner

Related posts about android

Related posts about alarms