diff --git a/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java b/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java index a2536cf09..1fe340def 100644 --- a/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java +++ b/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java @@ -598,7 +598,7 @@ private static void scheduleNextRepeatingNotification( AlarmManager alarmManager = getAlarmManager(context); if (notificationDetails.scheduleMode == null) { // This is to account for notifications created in older versions prior to allowWhileIdle - // being added so the deserialiser. + // being added to the deserialiser. // Reference to old behaviour: // https://github.com/MaikuB/flutter_local_notifications/blob/4b723e750d1371206520b10a122a444c4bba7475/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java#L569C37-L569C37 notificationDetails.scheduleMode = ScheduleMode.exactAllowWhileIdle; @@ -676,7 +676,7 @@ private static void repeatNotification( if (notificationDetails.scheduleMode == null) { // This is to account for notifications created in older versions prior to allowWhileIdle - // being added so the deserialiser. + // being added to the deserialiser. // Reference to old behaviour: // https://github.com/MaikuB/flutter_local_notifications/blob/4b723e750d1371206520b10a122a444c4bba7475/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java#L642 notificationDetails.scheduleMode = ScheduleMode.inexact; @@ -700,6 +700,15 @@ private static void setupAlarm( AlarmManager alarmManager, long epochMilli, PendingIntent pendingIntent) { + + if (notificationDetails.scheduleMode == null) { + // This is to account for notifications created in older versions prior to allowWhileIdle + // being added to the deserialiser. + // Reference to old behaviour: + // https://github.com/MaikuB/flutter_local_notifications/blob/master/flutter_local_notifications/android/src/main/java/com/dexterous/flutterlocalnotifications/FlutterLocalNotificationsPlugin.java#L735 + notificationDetails.scheduleMode = ScheduleMode.exact; + } + if (notificationDetails.scheduleMode.useAllowWhileIdle()) { setupAllowWhileIdleAlarm(notificationDetails, alarmManager, epochMilli, pendingIntent); } else {