Ошибка отправки Bundle с PendingIntent в широковещательный приемник, потерянные данные

Я добавляю некоторые основные функции тревоги в свою программу с помощью AlarmManager и класса BroadcastReceiver (с именем AReceiver.java). Моя проблема заключается в том, что данные, которые я добавляю к набору, прикрепленному к Intent, создающему PendingIntent, теряются. Единственными данными пакета, которые я могу получить в классе AReceiver, является android.intent.extra.ALARM_COUNT = 1.

Вот базовый код в основном классе активности, создающий Intent, PendingIntent и AlarmManager: [Код в основной деятельности - Notepadv3]

Intent intent = new Intent(Notepadv3.this, AReceiver.class);         
intent.putExtra("teststring","hello, passed string in Extra");               
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0);     
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);           
am.set(AlarmManager.RTC_WAKEUP, timeOfNextPeriod.getTimeInMillis(), alarmIntent);

[Код в BroadcastReceiver - AReceiver]

public void onReceive(Context con, Intent arg1) {
Bundle extrasBundle = arg1.getExtras();
Log.d("broadcast","contains teststring = " + extrasBundle.containsKey("teststring"));
Log.d("broadcast","is empty? = " + extrasBundle.isEmpty());
Log.d("broadcast","to string = " + extrasBundle.toString());
    }   

Отладочные сообщения говорят, что teststring является FALSE, пустым является FALSE, и при выводе всего пакета я получаю значение android.intent.extra.ALARM_COUNT = 1.

Любая помощь будет принята с благодарностью.

Cheers, Том

Ответы

Ответ 1

Вы должны изменить эту строку

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0);

в этот

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, PendingIntent.FLAG_UPDATE_CURRENT);

в противном случае данные теряются