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

Commit 032649b4 authored by Tiffany Nguyen's avatar Tiffany Nguyen Committed by YK Hung
Browse files

Move restricted apps page to new battery optimization page.

New entry: https://screenshot.googleplex.com/BbU6RnQhBbpnBc3.png
Restricted: https://screenshot.googleplex.com/5ggid7TcSsH9CUF.png
Old entry: https://screenshot.googleplex.com/7JgZpSfKs5zZb3Z.png

Bug: 240711616
Test: manual
Change-Id: I03d17beac0fb85a3d17acd7d0d581feb35e9582b
(cherry picked from commit 3acd34fe)
Merged-In: I03d17beac0fb85a3d17acd7d0d581feb35e9582b
parent 6147e0fa
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -633,4 +633,7 @@
        <item>@string/config_settingsintelligence_package_name</item>
        <item>android.uid.system:1000</item>
    </string-array>

    <!-- Whether to enable the app battery usage list page feature. -->
    <bool name="config_app_battery_usage_list_enabled">false</bool>
</resources>
+12 −0
Original line number Diff line number Diff line
@@ -76,6 +76,18 @@
        <intent android:action="android.intent.action.MANAGE_UNUSED_APPS"/>
    </Preference>

    <Preference
        android:key="app_battery_usage"
        android:order="17"
        android:title="@string/app_battery_optimization_title"
        android:summary="@string/app_battery_optimization_summary"
        settings:controller="com.android.settings.applications.AppBatteryUsagePreferenceController"
        android:fragment="com.android.settings.applications.manageapplications.ManageApplications">
        <extra
            android:name="classname"
            android:value="com.android.settings.Settings$AppBatteryUsageActivity"/>
    </Preference>

    <Preference
        android:key="special_access"
        android:fragment="com.android.settings.applications.specialaccess.SpecialAccessSettings"
+2 −2
Original line number Diff line number Diff line
@@ -326,8 +326,8 @@ public class Settings extends SettingsActivity {
    public static class ChangeWifiStateActivity extends SettingsActivity { /* empty */ }
    public static class AppDrawOverlaySettingsActivity extends SettingsActivity { /* empty */ }
    public static class AppWriteSettingsActivity extends SettingsActivity { /* empty */ }
    /** Activity to manage app battery optimization details. */
    public static class AppBatteryOptimizationActivity extends SettingsActivity { /* empty */ }
    /** Activity to manage app battery usage details. */
    public static class AppBatteryUsageActivity extends SettingsActivity { /* empty */ }

    public static class ManageExternalSourcesActivity extends SettingsActivity {/* empty */ }
    public static class ManageAppExternalSourcesActivity extends SettingsActivity { /* empty */ }
+46 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.applications;


import android.content.Context;

import androidx.lifecycle.LifecycleObserver;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;

/**
 * Preference controller for handling the app battery usage list preference.
 */
public final class AppBatteryUsagePreferenceController extends BasePreferenceController
        implements LifecycleObserver {
    private static final String TAG = "AppBatteryUsagePreferenceController";
    private boolean mEnableAppBatteryUsagePage;

    public AppBatteryUsagePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mEnableAppBatteryUsagePage =
                mContext.getResources().getBoolean(R.bool.config_app_battery_usage_list_enabled);
    }

    @Override
    public int getAvailabilityStatus() {
        return mEnableAppBatteryUsagePage ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
    }
}
+16 −16
Original line number Diff line number Diff line
@@ -31,10 +31,10 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * Class for bridging the Battery optimization information to ApplicationState.
 * Class for bridging the app battery usage information to ApplicationState.
 */
public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {
    private static final String TAG = AppStateBatteryOptimizationBridge.class.getSimpleName();
public class AppStateAppBatteryUsageBridge extends AppStateBaseBridge {
    private static final String TAG = AppStateAppBatteryUsageBridge.class.getSimpleName();
    static final boolean DEBUG = Build.IS_DEBUGGABLE;

    private final Context mContext;
@@ -58,7 +58,7 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {
    @interface OptimizationMode {
    }

    public AppStateBatteryOptimizationBridge(
    public AppStateAppBatteryUsageBridge(
            Context context, ApplicationsState appState, Callback callback) {
        super(appState, callback);
        mContext = context;
@@ -68,7 +68,7 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {

    @Override
    protected void updateExtraInfo(AppEntry app, String pkg, int uid) {
        app.extraInfo = getAppBatteryOptimizationState(pkg, uid);
        app.extraInfo = getAppBatteryUsageState(pkg, uid);
    }

    @Override
@@ -83,7 +83,7 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {
        }
    }

    protected Object getAppBatteryOptimizationState(String pkg, int uid) {
    protected Object getAppBatteryUsageState(String pkg, int uid) {
        // Restricted = AppOpsManager.MODE_IGNORED + !allowListed
        // Unrestricted = AppOpsManager.MODE_ALLOWED + allowListed
        // Optimized = AppOpsManager.MODE_ALLOWED + !allowListed
@@ -107,17 +107,17 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {
        if (DEBUG) {
            Log.d(TAG, "Pkg: " + pkg + ", mode: " + modeName);
        }
        return new BatteryOptimizationDetails(mode);
        return new AppBatteryUsageDetails(mode);
    }

    @OptimizationMode
    private static int getBatteryOptimizationDetailsMode(AppEntry entry) {
    private static int getAppBatteryUsageDetailsMode(AppEntry entry) {
        if (entry == null || entry.extraInfo == null) {
            return MODE_UNKNOWN;
        }

        return entry.extraInfo instanceof BatteryOptimizationDetails
                ? ((BatteryOptimizationDetails) entry.extraInfo).mMode
        return entry.extraInfo instanceof AppBatteryUsageDetails
                ? ((AppBatteryUsageDetails) entry.extraInfo).mMode
                : MODE_UNKNOWN;
    }

@@ -132,7 +132,7 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {

                @Override
                public boolean filterApp(AppEntry info) {
                    return getBatteryOptimizationDetailsMode(info) == MODE_UNRESTRICTED;
                    return getAppBatteryUsageDetailsMode(info) == MODE_UNRESTRICTED;
                }
            };

@@ -147,7 +147,7 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {

                @Override
                public boolean filterApp(AppEntry info) {
                    return getBatteryOptimizationDetailsMode(info) == MODE_OPTIMIZED;
                    return getAppBatteryUsageDetailsMode(info) == MODE_OPTIMIZED;
                }
            };

@@ -162,18 +162,18 @@ public class AppStateBatteryOptimizationBridge extends AppStateBaseBridge {

                @Override
                public boolean filterApp(AppEntry info) {
                    return getBatteryOptimizationDetailsMode(info) == MODE_RESTRICTED;
                    return getAppBatteryUsageDetailsMode(info) == MODE_RESTRICTED;
                }
            };

    /**
     * Extra details for battery optimization app data.
     * Extra details for app battery usage data.
     */
    static final class BatteryOptimizationDetails {
    static final class AppBatteryUsageDetails {
        @OptimizationMode
        int mMode;

        BatteryOptimizationDetails(@OptimizationMode int mode) {
        AppBatteryUsageDetails(@OptimizationMode int mode) {
            mMode = mode;
        }
    }
Loading