4

I have an Activity that runs the following code (time and interval are defined):

Intent buzzIntent = new Intent(getBaseContext(), BuzzReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, buzzIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
buzzIntent.putExtra("interval", interval);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, interval * 60 * 1000, pendingIntent);

and a BroadcastReceiver that has the following onReceive:

@Override
public void onReceive(Context context, Intent intent) {
    try {
        int interval = intent.getIntExtra("interval", -1);
        <... more code ...>
    } catch (Exception e) {
        e.printStackTrace();
    }
}

but the intent.getIntExtra() returns -1 (which isn't the value of interval in the Activity, I checked), so for some reason the BroadcastReceiver isn't getting the extras that I store into the intent in the Activity.

I've tried a ton of different things but nothing seems to work. Am I missing something here?

kevmo314
  • 4,223
  • 4
  • 32
  • 43
  • I am doing something similar HERE!!! http://stackoverflow.com/questions/14571564/android-pendingintent-extras-not-received-by-broadcastreceiver/14612215#14612215 – Etienne Lawlor Jan 31 '13 at 07:49

3 Answers3

22

Set flag FILL_IN_DATA while creating pending intent as below:

PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, buzzIntent, Intent.FILL_IN_DATA);

You should receive extras in broadcast receiver after this change.

Flexo
  • 87,323
  • 22
  • 191
  • 272
vivek.m
  • 3,213
  • 5
  • 33
  • 48
1

Have you tried calling buzzIntent.putExtra() before you pass buzzIntent to PendingIntent.getBroadcast()?

Jon Shemitz
  • 1,235
  • 13
  • 29
0

Try following code

Bundle bundle = intent.getExtras();
int interval= bundle.getInt("interval", -1);

instead of

int interval = intent.getIntExtra("interval", -1);
ingsaurabh
  • 15,249
  • 7
  • 52
  • 81