Отправка дополнений в BroadcastReceiver - PullRequest
2 голосов
/ 07 марта 2011

У меня есть действие, которое выполняет следующий код (время и интервал определены):

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);

и BroadcastReceiver, который имеет следующее onReceive:

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

, но намерение.getIntExtra () возвращает -1 (что не является значением интервала в Activity, я проверил), поэтому по какой-то причине BroadcastReceiver не получает дополнительные данные, которые я сохраняю в намерении в Activity.

Я пробовал кучу разных вещей, но ничего не получается.Я что-то здесь упускаю?

Ответы [ 3 ]

16 голосов
/ 15 октября 2011

Установить флаг FILL_IN_DATA при создании ожидающего намерения, как показано ниже:

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

После этого изменения вы должны получить дополнительные данные в широковещательном приемнике.

0 голосов
/ 10 августа 2011

Вы пытались звонить buzzIntent.putExtra() до того, как вы передадите buzzIntent на PendingIntent.getBroadcast()?

0 голосов
/ 07 марта 2011

Попробуйте следующий код

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

вместо

int interval = intent.getIntExtra("interval", -1);
...