From 1b83703adc1780cbf9aa8ff531f16e483e94360d Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Mon, 14 Oct 2024 11:14:57 +0800 Subject: [PATCH] Use BatteryOptimizeUtils to add packageName into PowerSaveWhitelistUserApps allowlist, which will set app into Unrestricted Mode Bug: 372831500 Test: test manually by app "Baidu Cloud"> auto-backup settings > add into battery allowlist. Flag: EXEMPT for simple fix Change-Id: I225ff0a04db3b5863ab32920511f42fbc02440dc --- .../RequestIgnoreBatteryOptimizations.java | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java b/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java index d948cc0f13a..9b070f99950 100644 --- a/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java +++ b/src/com/android/settings/fuelgauge/RequestIgnoreBatteryOptimizations.java @@ -16,6 +16,8 @@ package com.android.settings.fuelgauge; +import static com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED; + import android.Manifest; import android.content.DialogInterface; import android.content.pm.ApplicationInfo; @@ -24,20 +26,20 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.os.PowerManager; -import android.os.PowerWhitelistManager; +import android.text.TextUtils; import android.util.Log; import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; import com.android.settings.R; +import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action; public class RequestIgnoreBatteryOptimizations extends AlertActivity implements DialogInterface.OnClickListener { private static final String TAG = "RequestIgnoreBatteryOptimizations"; private static final boolean DEBUG = false; - private PowerWhitelistManager mPowerWhitelistManager; - private String mPackageName; + private ApplicationInfo mApplicationInfo; @Override public void onCreate(Bundle savedInstanceState) { @@ -47,8 +49,6 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity android.view.WindowManager.LayoutParams .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); - mPowerWhitelistManager = getSystemService(PowerWhitelistManager.class); - Uri data = getIntent().getData(); if (data == null) { debugLog( @@ -56,17 +56,18 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity finish(); return; } - mPackageName = data.getSchemeSpecificPart(); - if (mPackageName == null) { + final String packageName = data.getSchemeSpecificPart(); + if (TextUtils.isEmpty(packageName)) { debugLog( "No data supplied for IGNORE_BATTERY_OPTIMIZATION_SETTINGS in: " + getIntent()); finish(); return; } + // Package in Unrestricted mode already ignoring the battery optimizations. PowerManager power = getSystemService(PowerManager.class); - if (power.isIgnoringBatteryOptimizations(mPackageName)) { - debugLog("Not should prompt, already ignoring optimizations: " + mPackageName); + if (power.isIgnoringBatteryOptimizations(packageName)) { + debugLog("Not should prompt, already ignoring optimizations: " + packageName); finish(); return; } @@ -74,29 +75,28 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity if (getPackageManager() .checkPermission( Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, - mPackageName) + packageName) != PackageManager.PERMISSION_GRANTED) { debugLog( "Requested package " - + mPackageName + + packageName + " does not hold permission " + Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); finish(); return; } - ApplicationInfo ai; try { - ai = getPackageManager().getApplicationInfo(mPackageName, 0); + mApplicationInfo = getPackageManager().getApplicationInfo(packageName, 0); } catch (PackageManager.NameNotFoundException e) { - debugLog("Requested package doesn't exist: " + mPackageName); + debugLog("Requested package doesn't exist: " + packageName); finish(); return; } final AlertController.AlertParams p = mAlertParams; final CharSequence appLabel = - ai.loadSafeLabel( + mApplicationInfo.loadSafeLabel( getPackageManager(), PackageItemInfo.DEFAULT_MAX_LABEL_SIZE_PX, PackageItemInfo.SAFE_LABEL_FLAG_TRIM @@ -114,7 +114,12 @@ public class RequestIgnoreBatteryOptimizations extends AlertActivity public void onClick(DialogInterface dialog, int which) { switch (which) { case BUTTON_POSITIVE: - mPowerWhitelistManager.addToWhitelist(mPackageName); + BatteryOptimizeUtils batteryOptimizeUtils = + new BatteryOptimizeUtils( + getApplicationContext(), + mApplicationInfo.uid, + mApplicationInfo.packageName); + batteryOptimizeUtils.setAppUsageState(MODE_UNRESTRICTED, Action.APPLY); break; case BUTTON_NEGATIVE: break;