From 5aa2c8473708068659f275baf6909af89f3e4569 Mon Sep 17 00:00:00 2001 From: rmp22 <195054967+rmp22@users.noreply.github.com> Date: Mon, 14 Apr 2025 23:54:10 +0800 Subject: [PATCH] ChargingControlNotification: fix system server crash 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.ACTION_POWER_CONNECTED flg=0x4000010 (has extras) } in org.lineageos.platform.internal.health.ChargingControlController$1@bf90f01 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1837) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$mcNAAl1SQ4MyJPyDg8TJ2x2h0Rk(Unknown Source:0) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:991) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.os.Looper.loop(Looper.java:317) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:1016) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:689) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:591) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:889) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: Caused by: java.util.IllegalFormatConversionException: d != java.lang.String 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4608) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:3123) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.util.Formatter$FormatSpecifier.print(Formatter.java:3078) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.util.Formatter.format(Formatter.java:2710) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.util.Formatter.format(Formatter.java:2640) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at java.lang.String.format(String.java:4037) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlNotification.postChargingControlNotification(ChargingControlNotification.java:112) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlNotification.post(ChargingControlNotification.java:82) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController.updateChargeControl(ChargingControlController.java:419) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController.onPowerStatus(ChargingControlController.java:338) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController.-$$Nest$monPowerStatus(Unknown Source:0) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController$1.onReceive(ChargingControlController.java:241) 04-15 00:34:22.797 1000 1361 1361 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1829) Change-Id: I6b1aae55c0740af80e3ed499a5210ab41bddf418 --- .../health/ChargingControlNotification.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java b/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java index 50a07322..0b7399c8 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java @@ -107,15 +107,24 @@ public class ChargingControlNotification { private void postChargingControlNotification(Long targetTime, int limit) { String title = mContext.getString(R.string.charging_control_notification_title); - String message; - if (targetTime != null) { - message = String.format( - mContext.getString(R.string.charging_control_notification_content_target), - msToString(mContext, targetTime)); - } else { - message = String.format( - mContext.getString(R.string.charging_control_notification_content_limit), - limit); + String message = null; + + try { + if (targetTime != null) { + message = String.format( + mContext.getString(R.string.charging_control_notification_content_target), + msToString(mContext, targetTime)); + } else { + message = String.format( + mContext.getString(R.string.charging_control_notification_content_limit), + limit); + } + } catch (Exception e) { + message = null; + } + + if (message == null) { + return; } Intent mainIntent = new Intent(INTENT_PARTS);