fix(android): use TimeZone for default zone ID to support API 23

java.time.ZoneId is available only from API 26; on Android 6 it causes
NoClassDefFoundError when building NotificationContentEntity. Replaced
ZoneId.systemDefault().id with TimeZone.getDefault().id (Kotlin) and
getID() (Java) wherever we only need the system timezone ID string.

Same IANA ID and behavior on API 26+. No data or semantic change.
Worker/Scheduler still use java.time for date math; full API 23 there
would require ThreeTenABP or Calendar-based logic.
This commit is contained in:
Jose Olarte III
2026-02-27 16:02:45 +08:00
parent cff7b659dc
commit ec064a2aa0
6 changed files with 7 additions and 7 deletions

View File

@@ -229,7 +229,7 @@ public class DailyNotificationFetcher {
content.getTitle(), content.getTitle(),
content.getBody(), content.getBody(),
content.getScheduledTime(), content.getScheduledTime(),
java.time.ZoneId.systemDefault().getId() java.util.TimeZone.getDefault().getID()
); );
entity.priority = mapPriority(content.getPriority()); entity.priority = mapPriority(content.getPriority());
try { try {

View File

@@ -2711,7 +2711,7 @@ object ScheduleHelper {
config.title ?: "Daily Notification", config.title ?: "Daily Notification",
config.body ?: "", config.body ?: "",
nextRunTime, nextRunTime,
java.time.ZoneId.systemDefault().id java.util.TimeZone.getDefault().id
) )
entity.soundEnabled = config.sound ?: true entity.soundEnabled = config.sound ?: true
entity.vibrationEnabled = config.vibration ?: true entity.vibrationEnabled = config.vibration ?: true

View File

@@ -740,7 +740,7 @@ public class DailyNotificationWorker extends Worker {
content.getTitle(), content.getTitle(),
content.getBody(), content.getBody(),
content.getScheduledTime(), content.getScheduledTime(),
java.time.ZoneId.systemDefault().getId() java.util.TimeZone.getDefault().getID()
); );
entity.priority = mapPriorityToInt(content.getPriority()); entity.priority = mapPriorityToInt(content.getPriority());
try { try {

View File

@@ -211,7 +211,7 @@ class FetchWorker(
title, title,
body, body,
notificationTime, notificationTime,
java.time.ZoneId.systemDefault().id java.util.TimeZone.getDefault().id
) )
entity.priority = 0 // default priority entity.priority = 0 // default priority
entity.vibrationEnabled = true entity.vibrationEnabled = true

View File

@@ -257,7 +257,7 @@ class NotifyReceiver : BroadcastReceiver() {
config.title, config.title,
config.body ?: (if (contentCache != null) String(contentCache.payload) else ""), config.body ?: (if (contentCache != null) String(contentCache.payload) else ""),
triggerAtMillis, triggerAtMillis,
java.time.ZoneId.systemDefault().id java.util.TimeZone.getDefault().id
) )
entity.priority = when (config.priority) { entity.priority = when (config.priority) {
"high", "max" -> 2 "high", "max" -> 2

View File

@@ -273,7 +273,7 @@ class ReactivationManager(private val context: Context) {
"Daily Notification", "Daily Notification",
"Your daily update is ready", "Your daily update is ready",
scheduledTime, scheduledTime,
java.time.ZoneId.systemDefault().id java.util.TimeZone.getDefault().id
) )
notification.deliveryStatus = "missed" notification.deliveryStatus = "missed"
notification.lastDeliveryAttempt = System.currentTimeMillis() notification.lastDeliveryAttempt = System.currentTimeMillis()
@@ -1043,7 +1043,7 @@ class ReactivationManager(private val context: Context) {
"Daily Notification", "Daily Notification",
"Your daily update is ready", "Your daily update is ready",
scheduledTime, scheduledTime,
java.time.ZoneId.systemDefault().id java.util.TimeZone.getDefault().id
) )
notification.deliveryStatus = "missed" notification.deliveryStatus = "missed"
notification.lastDeliveryAttempt = System.currentTimeMillis() notification.lastDeliveryAttempt = System.currentTimeMillis()