Loading services/core/java/com/android/server/BatteryService.java +10 −4 Original line number Diff line number Diff line Loading @@ -777,18 +777,24 @@ public final class BatteryService extends SystemService { + ", info:" + mHealthInfo.toString()); } mHandler.post(() -> broadcastBatteryChangedIntent(intent, mBatteryChangedOptions)); mHandler.post(() -> broadcastBatteryChangedIntent(mContext, intent, mBatteryChangedOptions)); } private static void broadcastBatteryChangedIntent(Intent intent, Bundle options) { private static void broadcastBatteryChangedIntent(Context context, Intent intent, Bundle options) { // TODO (293959093): It is important that SystemUI receives this broadcast as soon as // possible. Ideally, it should be using binder callbacks but until then, dispatch this // as a foreground broadcast to SystemUI. final Intent fgIntent = new Intent(intent); fgIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); fgIntent.setPackage(sSystemUiPackage); if (com.android.server.flags.Flags.pkgTargetedBatteryChangedNotSticky()) { context.sendBroadcastAsUser(fgIntent, UserHandle.ALL, null, options); } else { ActivityManager.broadcastStickyIntent(fgIntent, AppOpsManager.OP_NONE, options, UserHandle.USER_ALL); } ActivityManager.broadcastStickyIntent(intent, new String[] {sSystemUiPackage}, AppOpsManager.OP_NONE, options, UserHandle.USER_ALL); Loading services/core/java/com/android/server/flags/services.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,14 @@ flag { purpose: PURPOSE_BUGFIX } } flag { namespace: "backstage_power" name: "pkg_targeted_battery_changed_not_sticky" description: "Avoid sending the package targeted BATTERY_CHANGED broadcast as sticky" bug: "336832816" is_fixed_read_only: true metadata { purpose: PURPOSE_BUGFIX } } Loading
services/core/java/com/android/server/BatteryService.java +10 −4 Original line number Diff line number Diff line Loading @@ -777,18 +777,24 @@ public final class BatteryService extends SystemService { + ", info:" + mHealthInfo.toString()); } mHandler.post(() -> broadcastBatteryChangedIntent(intent, mBatteryChangedOptions)); mHandler.post(() -> broadcastBatteryChangedIntent(mContext, intent, mBatteryChangedOptions)); } private static void broadcastBatteryChangedIntent(Intent intent, Bundle options) { private static void broadcastBatteryChangedIntent(Context context, Intent intent, Bundle options) { // TODO (293959093): It is important that SystemUI receives this broadcast as soon as // possible. Ideally, it should be using binder callbacks but until then, dispatch this // as a foreground broadcast to SystemUI. final Intent fgIntent = new Intent(intent); fgIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); fgIntent.setPackage(sSystemUiPackage); if (com.android.server.flags.Flags.pkgTargetedBatteryChangedNotSticky()) { context.sendBroadcastAsUser(fgIntent, UserHandle.ALL, null, options); } else { ActivityManager.broadcastStickyIntent(fgIntent, AppOpsManager.OP_NONE, options, UserHandle.USER_ALL); } ActivityManager.broadcastStickyIntent(intent, new String[] {sSystemUiPackage}, AppOpsManager.OP_NONE, options, UserHandle.USER_ALL); Loading
services/core/java/com/android/server/flags/services.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,14 @@ flag { purpose: PURPOSE_BUGFIX } } flag { namespace: "backstage_power" name: "pkg_targeted_battery_changed_not_sticky" description: "Avoid sending the package targeted BATTERY_CHANGED broadcast as sticky" bug: "336832816" is_fixed_read_only: true metadata { purpose: PURPOSE_BUGFIX } }