Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b83703a authored by mxyyiyi's avatar mxyyiyi
Browse files

Use BatteryOptimizeUtils to add packageName into PowerSaveWhitelistUserApps...

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
parent fdc8eb3e
Loading
Loading
Loading
Loading
+21 −16
Original line number Diff line number Diff line
@@ -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;