diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java b/app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java index 2b2fb9c..7170a77 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java @@ -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) diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java index 56d3c66..2ced869 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java @@ -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); }