Fix ClassCastException while parsing fireDate

ClassCastException was thrown on Android 8.1 while trying to schedule
local notification. Use try-catch approach instead of relaying on the
default parse value.
This commit is contained in:
Dariusz Luksza 2018-05-11 14:26:58 +02:00
parent f3806da600
commit dbc5a2d54e
1 changed files with 11 additions and 9 deletions

View File

@ -309,9 +309,12 @@ public class RNFirebaseNotificationManager {
// fireDate is stored in the Bundle as Long after notifications are rescheduled. // fireDate is stored in the Bundle as Long after notifications are rescheduled.
// This would lead to a fireDate of 0.0 when trying to extract a Double from the bundle. // This would lead to a fireDate of 0.0 when trying to extract a Double from the bundle.
// Instead always try extract a Long // Instead always try extract a Long
Long fireDate = schedule.getLong("fireDate", -1); Long fireDate = -1L;
if (fireDate == -1) { try {
fireDate = (long) schedule.getDouble("fireDate", -1); fireDate = (long) schedule.getDouble("fireDate", -1);
} catch (ClassCastException e) {
fireDate = schedule.getLong("fireDate", -1);
}
if (fireDate == -1) { if (fireDate == -1) {
if (promise == null) { if (promise == null) {
Log.e(TAG, "Missing schedule information"); Log.e(TAG, "Missing schedule information");
@ -320,7 +323,6 @@ public class RNFirebaseNotificationManager {
} }
return; return;
} }
}
// Scheduled alarms are cleared on restart // Scheduled alarms are cleared on restart
// We store them so that they can be re-scheduled when the phone restarts in RNFirebaseNotificationsRebootReceiver // We store them so that they can be re-scheduled when the phone restarts in RNFirebaseNotificationsRebootReceiver