создать PendingIntent
вроде этого:Намерение дополнительных утрачиваются с трансляцией PendingIntent и AlarmManager.setAlarmClock()
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("Foobar");
intent.putExtra(EXTRA_ALARM, alarm);
intent.putExtra(EXTRA_TRYTWO, tryTwo);
intent.putExtra(EXTRA_BEGAN_TIME, beganTime);
return PendingIntent.getBroadcast(
context, (int) alarm.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT
);
Переменная alarm
является Parcelable
. Я планировать PendingIntent
так:
PendingIntent alarmModifyPendingIntent = PendingIntent.getActivity(
context, 0, editIntent, PendingIntent.FLAG_CANCEL_CURRENT
);
am.setAlarmClock(
new AlarmManager.AlarmClockInfo(time, alarmModifyPendingIntent), pendingIntent
);
Если переменная pendingIntent
создается, как показано выше.
Объект AlarmReceiver
получает Intent
в onReceive
в нужное время. Однако этот Intent
не содержит дополнительных функций, которые я установил. Например, intent.getParcelableExtra(EXTRA_ALARM)
возвращает null
.
Эта проблема возникает, по крайней мере, с Android 7.0 (API level 24), используя LG G5.
Использование FLAG_CANCEL_CURRENT
или FLAG_ONE_SHOT
не работает.
Благодарим за внимание. Я буду исследовать. –
Я только что протестировал его, и вы действительно были правы! Преобразование в байт [] работает. Большое спасибо. –
При необходимости онлайновые посчитанные конвертеры не будут работать, если и до тех пор, пока они не преобразут пакет в байт []. –