fix(alarm): avoid ClassCastException casting snooze millis to Long
Flutter's StandardMethodCodec encodes Dart ints that fit in 32 bits as Java Integer, not Long. scheduleAlarm sends preNoticeAtMillis=0 when rescheduling a snooze, which crashed the unchecked argument<Long>() cast. Read all millis args as Number and convert with toLong().
This commit is contained in:
@@ -80,8 +80,8 @@ class MainActivity : AudioServiceActivity() {
|
||||
"scheduleAlarm" -> {
|
||||
val id = call.argument<String>("id")
|
||||
val title = call.argument<String>("title") ?: "PluriWave"
|
||||
val triggerAtMillis = call.argument<Long>("triggerAtMillis")
|
||||
val preNoticeAtMillis = call.argument<Long>("preNoticeAtMillis") ?: 0L
|
||||
val triggerAtMillis = call.argument<Number>("triggerAtMillis")?.toLong()
|
||||
val preNoticeAtMillis = call.argument<Number>("preNoticeAtMillis")?.toLong() ?: 0L
|
||||
val stationName = call.argument<String>("stationName")
|
||||
val stationUrl = call.argument<String>("stationUrl")
|
||||
val fallbackSound = call.argument<String>("fallbackSound")
|
||||
@@ -107,10 +107,10 @@ class MainActivity : AudioServiceActivity() {
|
||||
minute = call.argument<Int>("minute"),
|
||||
scheduleType = call.argument<String>("scheduleType"),
|
||||
weekdays = weekdays,
|
||||
oneShotDateMillis = call.argument<Long>("oneShotDateMillis"),
|
||||
snoozeUntilMillis = call.argument<Long>("snoozeUntilMillis"),
|
||||
snoozeOriginMillis = call.argument<Long>("snoozeOriginMillis"),
|
||||
lastHandledAtMillis = call.argument<Long>("lastHandledAtMillis"),
|
||||
oneShotDateMillis = call.argument<Number>("oneShotDateMillis")?.toLong(),
|
||||
snoozeUntilMillis = call.argument<Number>("snoozeUntilMillis")?.toLong(),
|
||||
snoozeOriginMillis = call.argument<Number>("snoozeOriginMillis")?.toLong(),
|
||||
lastHandledAtMillis = call.argument<Number>("lastHandledAtMillis")?.toLong(),
|
||||
soundOnVacation = call.argument<Boolean>("soundOnVacation") ?: true,
|
||||
snoozeMinutes = call.argument<Int>("snoozeMinutes") ?: 5,
|
||||
fallbackStationName = call.argument<String>("fallbackStationName"),
|
||||
|
||||
Reference in New Issue
Block a user