From 7661b4b84f2c21f52ac13069a31e7e12b687de6b Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sun, 29 Sep 2024 21:45:55 -0400 Subject: [PATCH 1/2] Output any foreground task error to Log --- .../im/angry/openeuicc/service/EuiccChannelManagerService.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt b/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt index 788a251..841458d 100644 --- a/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt +++ b/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.content.pm.PackageManager import android.os.Binder import android.os.IBinder +import android.util.Log import androidx.core.app.NotificationChannelCompat import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat @@ -49,6 +50,7 @@ import net.typeblog.lpac_jni.ProfileDownloadCallback */ class EuiccChannelManagerService : LifecycleService(), OpenEuiccContextMarker { companion object { + private const val TAG = "EuiccChannelManagerService" private const val CHANNEL_ID = "tasks" private const val FOREGROUND_ID = 1000 } @@ -192,6 +194,8 @@ class EuiccChannelManagerService : LifecycleService(), OpenEuiccContextMarker { // This update will be sent by the subscriber (as shown below) foregroundTaskState.value = ForegroundTaskState.Done(null) } catch (t: Throwable) { + Log.e(TAG, "Foreground task encountered an error") + Log.e(TAG, Log.getStackTraceString(t)) foregroundTaskState.value = ForegroundTaskState.Done(t) } finally { stopSelf() From 54b4f61fd7e5560bd49578640ea25bd3943fa3a5 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sun, 29 Sep 2024 21:50:47 -0400 Subject: [PATCH 2/2] Improve notification channel creation --- .../service/EuiccChannelManagerService.kt | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt b/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt index 841458d..fa22dc1 100644 --- a/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt +++ b/app-common/src/main/java/im/angry/openeuicc/service/EuiccChannelManagerService.kt @@ -107,12 +107,18 @@ class EuiccChannelManagerService : LifecycleService(), OpenEuiccContextMarker { } private suspend fun updateForegroundNotification(title: String, iconRes: Int) { - val channel = - NotificationChannelCompat.Builder(CHANNEL_ID, NotificationManagerCompat.IMPORTANCE_LOW) - .setName(getString(R.string.task_notification)) - .setVibrationEnabled(false) - .build() - NotificationManagerCompat.from(this).createNotificationChannel(channel) + val nm = NotificationManagerCompat.from(this) + if (nm.getNotificationChannelCompat(CHANNEL_ID) == null) { + val channel = + NotificationChannelCompat.Builder( + CHANNEL_ID, + NotificationManagerCompat.IMPORTANCE_LOW + ) + .setName(getString(R.string.task_notification)) + .setVibrationEnabled(false) + .build() + nm.createNotificationChannel(channel) + } val state = foregroundTaskState.value @@ -129,7 +135,7 @@ class EuiccChannelManagerService : LifecycleService(), OpenEuiccContextMarker { if (state.progress == 0) { startForeground(FOREGROUND_ID, notification) } else if (checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) { - NotificationManagerCompat.from(this).notify(FOREGROUND_ID, notification) + nm.notify(FOREGROUND_ID, notification) } // Yield out so that the main looper can handle the notification event