Marshall and unmarshall Alarms passed to and from UpcomingAlarmReceiver.

This commit is contained in:
Phillip Hsu 2017-02-28 15:07:56 -08:00
parent e68ac72629
commit dd4c6d417b
2 changed files with 8 additions and 4 deletions

View File

@ -29,6 +29,7 @@ import com.philliphsu.clock2.R;
import com.philliphsu.clock2.alarms.Alarm;
import com.philliphsu.clock2.alarms.misc.AlarmController;
import com.philliphsu.clock2.util.ContentIntentUtils;
import com.philliphsu.clock2.util.ParcelableUtil;
import static android.app.PendingIntent.FLAG_ONE_SHOT;
import static com.philliphsu.clock2.util.TimeFormatUtils.formatTime;
@ -45,7 +46,9 @@ public class UpcomingAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final Alarm alarm = intent.getParcelableExtra(EXTRA_ALARM);
final byte[] alarmBytes = intent.getByteArrayExtra(EXTRA_ALARM);
// Unmarshall the bytes into a parcel and create our Alarm with it.
final Alarm alarm = ParcelableUtil.unmarshall(alarmBytes, Alarm.CREATOR);
if (alarm == null) {
throw new IllegalStateException("No alarm received");
}
@ -84,7 +87,7 @@ public class UpcomingAlarmReceiver extends BroadcastReceiver {
Intent dismissIntent = new Intent(context, UpcomingAlarmReceiver.class)
.setAction(ACTION_DISMISS_NOW)
.putExtra(EXTRA_ALARM, alarm);
.putExtra(EXTRA_ALARM, ParcelableUtil.marshall(alarm));
PendingIntent piDismiss = PendingIntent.getBroadcast(context, (int) id, dismissIntent, FLAG_ONE_SHOT);
Notification note = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_alarm_24dp)

View File

@ -36,6 +36,7 @@ import com.philliphsu.clock2.ringtone.playback.AlarmRingtoneService;
import com.philliphsu.clock2.util.ContentIntentUtils;
import com.philliphsu.clock2.util.DelayedSnackbarHandler;
import com.philliphsu.clock2.util.DurationUtils;
import com.philliphsu.clock2.util.ParcelableUtil;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_NO_CREATE;
@ -213,7 +214,7 @@ public final class AlarmController {
public void removeUpcomingAlarmNotification(Alarm a) {
Intent intent = new Intent(mAppContext, UpcomingAlarmReceiver.class)
.setAction(UpcomingAlarmReceiver.ACTION_CANCEL_NOTIFICATION)
.putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, a);
.putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, ParcelableUtil.marshall(a));
mAppContext.sendBroadcast(intent);
}
@ -238,7 +239,7 @@ public final class AlarmController {
private PendingIntent notifyUpcomingAlarmIntent(Alarm alarm, boolean retrievePrevious) {
Intent intent = new Intent(mAppContext, UpcomingAlarmReceiver.class)
.putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, alarm);
.putExtra(UpcomingAlarmReceiver.EXTRA_ALARM, ParcelableUtil.marshall(alarm));
if (alarm.isSnoozed()) {
intent.setAction(UpcomingAlarmReceiver.ACTION_SHOW_SNOOZING);
}