From 93f2405d7dded19cd3c9add76ae58a472281548f Mon Sep 17 00:00:00 2001 From: sameerasw Date: Fri, 20 Feb 2026 09:58:05 +0530 Subject: [PATCH 1/2] fix: App crash due to no devices connected for battery notification --- .../services/BatteryNotificationService.kt | 45 +++++++++++++------ app/src/main/res/values/strings.xml | 1 + 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/sameerasw/essentials/services/BatteryNotificationService.kt b/app/src/main/java/com/sameerasw/essentials/services/BatteryNotificationService.kt index f2741798b..0b1d0bbfe 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/BatteryNotificationService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/BatteryNotificationService.kt @@ -43,10 +43,16 @@ class BatteryNotificationService : Service() { settingsRepository = SettingsRepository(this) createNotificationChannel() settingsRepository.registerOnSharedPreferenceChangeListener(preferenceChangeListener) + + startForeground(NOTIF_ID, buildBaseNotification(getString(R.string.feat_batteries_title), "")) + updateNotification() } override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForeground(NOTIF_ID, buildBaseNotification(getString(R.string.feat_batteries_title), "")) + } updateNotification() return START_STICKY } @@ -77,26 +83,39 @@ class BatteryNotificationService : Service() { private fun updateNotification() { val batteryItems = fetchBatteryData() - if (batteryItems.isEmpty()) { - stopForeground(true) - stopSelf() - return + + val notification = if (batteryItems.isEmpty()) { + buildBaseNotification( + getString(R.string.feat_batteries_title), + getString(R.string.battery_notification_no_devices) + ) + } else { + val bitmap = createCompositeBitmap(batteryItems) + NotificationCompat.Builder(this, CHANNEL_ID) + .setSmallIcon(R.drawable.rounded_battery_charging_60_24) + .setLargeIcon(bitmap) + .setStyle(NotificationCompat.BigPictureStyle() + .bigPicture(bitmap) + .bigLargeIcon(null as Bitmap?)) + .setContentTitle(getString(R.string.feat_batteries_title)) + .setPriority(NotificationCompat.PRIORITY_LOW) + .setOngoing(true) + .setSilent(true) + .build() } - val bitmap = createCompositeBitmap(batteryItems) - val notification = NotificationCompat.Builder(this, CHANNEL_ID) + startForeground(NOTIF_ID, notification) + } + + private fun buildBaseNotification(title: String, content: String): Notification { + return NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.rounded_battery_charging_60_24) - .setLargeIcon(bitmap) - .setStyle(NotificationCompat.BigPictureStyle() - .bigPicture(bitmap) - .bigLargeIcon(null as Bitmap?)) - .setContentTitle(getString(R.string.feat_batteries_title)) + .setContentTitle(title) + .setContentText(content) .setPriority(NotificationCompat.PRIORITY_LOW) .setOngoing(true) .setSilent(true) .build() - - startForeground(NOTIF_ID, notification) } private fun fetchBatteryData(): List { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 68b0255cb..97b6fe024 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -690,6 +690,7 @@ App Updates Notifications for new app updates Update available + No devices connected Unknown 5G From 344562b73a7b715f40efa885b7425c6dae756415 Mon Sep 17 00:00:00 2001 From: sameerasw Date: Fri, 20 Feb 2026 09:58:32 +0530 Subject: [PATCH 2/2] version: Upgrade --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 223c3fc50..bea3f4cca 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ android { applicationId = "com.sameerasw.essentials" minSdk = 26 targetSdk = 36 - versionCode = 27 - versionName = "11.3" + versionCode = 28 + versionName = "11.4" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }