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

Commit 3acd34fe authored by Tiffany Nguyen's avatar Tiffany Nguyen
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
parent aef0cde4
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 */ }
+55 −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 android.permission.PermissionControllerManager;
import android.provider.DeviceConfig;

import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

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

import com.google.common.annotations.VisibleForTesting;

import java.util.concurrent.Executor;

/**
 * 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;
    }
}
 No newline at end of file
+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