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
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index f7ba017..f1c1191 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -326,8 +326,8 @@
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 */ }
diff --git a/src/com/android/settings/applications/AppBatteryUsagePreferenceController.java b/src/com/android/settings/applications/AppBatteryUsagePreferenceController.java
new file mode 100644
index 0000000..59e409b
--- /dev/null
+++ b/src/com/android/settings/applications/AppBatteryUsagePreferenceController.java
@@ -0,0 +1,55 @@
+/*
+ * 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
diff --git a/src/com/android/settings/applications/AppStateBatteryOptimizationBridge.java b/src/com/android/settings/applications/AppStateAppBatteryUsageBridge.java
similarity index 81%
rename from src/com/android/settings/applications/AppStateBatteryOptimizationBridge.java
rename to src/com/android/settings/applications/AppStateAppBatteryUsageBridge.java
index 6301c85..3674212 100644
--- a/src/com/android/settings/applications/AppStateBatteryOptimizationBridge.java
+++ b/src/com/android/settings/applications/AppStateAppBatteryUsageBridge.java
@@ -31,10 +31,10 @@
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 @@
@interface OptimizationMode {
}
- public AppStateBatteryOptimizationBridge(
+ public AppStateAppBatteryUsageBridge(
Context context, ApplicationsState appState, Callback callback) {
super(appState, callback);
mContext = context;
@@ -68,7 +68,7 @@
@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 @@
}
}
- 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 @@
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 @@
@Override
public boolean filterApp(AppEntry info) {
- return getBatteryOptimizationDetailsMode(info) == MODE_UNRESTRICTED;
+ return getAppBatteryUsageDetailsMode(info) == MODE_UNRESTRICTED;
}
};
@@ -147,7 +147,7 @@
@Override
public boolean filterApp(AppEntry info) {
- return getBatteryOptimizationDetailsMode(info) == MODE_OPTIMIZED;
+ return getAppBatteryUsageDetailsMode(info) == MODE_OPTIMIZED;
}
};
@@ -162,18 +162,18 @@
@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;
}
}
diff --git a/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java b/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java
index 35de16e..15cf8e7 100644
--- a/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java
+++ b/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java
@@ -20,7 +20,7 @@
import com.android.settings.R;
import com.android.settings.applications.AppStateAlarmsAndRemindersBridge;
-import com.android.settings.applications.AppStateBatteryOptimizationBridge;
+import com.android.settings.applications.AppStateAppBatteryUsageBridge;
import com.android.settings.applications.AppStateInstallAppsBridge;
import com.android.settings.applications.AppStateLocaleBridge;
import com.android.settings.applications.AppStateManageExternalStorageBridge;
@@ -225,21 +225,21 @@
// Unrestricted
mFilters[FILTER_APPS_BATTERY_UNRESTRICTED] =
new AppFilterItem(
- AppStateBatteryOptimizationBridge.FILTER_BATTERY_UNRESTRICTED_APPS,
+ AppStateAppBatteryUsageBridge.FILTER_BATTERY_UNRESTRICTED_APPS,
FILTER_APPS_BATTERY_UNRESTRICTED,
R.string.filter_battery_unrestricted_title);
// Optimized
mFilters[FILTER_APPS_BATTERY_OPTIMIZED] =
new AppFilterItem(
- AppStateBatteryOptimizationBridge.FILTER_BATTERY_OPTIMIZED_APPS,
+ AppStateAppBatteryUsageBridge.FILTER_BATTERY_OPTIMIZED_APPS,
FILTER_APPS_BATTERY_OPTIMIZED,
R.string.filter_battery_optimized_title);
// Unrestricted
mFilters[FILTER_APPS_BATTERY_RESTRICTED] =
new AppFilterItem(
- AppStateBatteryOptimizationBridge.FILTER_BATTERY_RESTRICTED_APPS,
+ AppStateAppBatteryUsageBridge.FILTER_BATTERY_RESTRICTED_APPS,
FILTER_APPS_BATTERY_RESTRICTED,
R.string.filter_battery_restricted_title);
}
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 00af973..71c6a67 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -100,7 +100,7 @@
import com.android.settings.applications.AppStateAlarmsAndRemindersBridge;
import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
import com.android.settings.applications.AppStateBaseBridge;
-import com.android.settings.applications.AppStateBatteryOptimizationBridge;
+import com.android.settings.applications.AppStateAppBatteryUsageBridge;
import com.android.settings.applications.AppStateInstallAppsBridge;
import com.android.settings.applications.AppStateLocaleBridge;
import com.android.settings.applications.AppStateManageExternalStorageBridge;
@@ -336,7 +336,7 @@
}
} else if (className.equals(AppLocaleDetails.class.getName())) {
mListType = LIST_TYPE_APPS_LOCALE;
- } else if (className.equals(Settings.AppBatteryOptimizationActivity.class.getName())) {
+ } else if (className.equals(Settings.AppBatteryUsageActivity.class.getName())) {
mListType = LIST_TYPE_BATTERY_OPTIMIZATION;
} else {
mListType = LIST_TYPE_MAIN;
@@ -958,7 +958,7 @@
screenTitle = R.string.app_notifications_title;
} else if (className.equals(AppLocaleDetails.class.getName())) {
screenTitle = R.string.app_locales_picker_menu_title;
- } else if (className.equals(Settings.AppBatteryOptimizationActivity.class.getName())) {
+ } else if (className.equals(Settings.AppBatteryUsageActivity.class.getName())) {
screenTitle = R.string.app_battery_optimization_title;
} else {
if (screenTitle == -1) {
@@ -1153,7 +1153,7 @@
} else if (mManageApplications.mListType == LIST_TYPE_APPS_LOCALE) {
mExtraInfoBridge = new AppStateLocaleBridge(mContext, mState, this);
} else if (mManageApplications.mListType == LIST_TYPE_BATTERY_OPTIMIZATION) {
- mExtraInfoBridge = new AppStateBatteryOptimizationBridge(mContext, mState, this);
+ mExtraInfoBridge = new AppStateAppBatteryUsageBridge(mContext, mState, this);
} else {
mExtraInfoBridge = null;
}
@@ -1199,7 +1199,7 @@
rebuild(R.id.sort_order_alpha, true);
}
} else if (mManageApplications.mListType == LIST_TYPE_BATTERY_OPTIMIZATION) {
- logBatteryOptimization(filterType);
+ logAppBatteryUsage(filterType);
} else {
rebuild();
}
@@ -1336,7 +1336,7 @@
});
}
- private void logBatteryOptimization(int filterType) {
+ private void logAppBatteryUsage(int filterType) {
switch(filterType) {
case FILTER_APPS_BATTERY_UNRESTRICTED:
logAction(SettingsEnums.ACTION_BATTERY_OPTIMIZED_APPS_FILTER_UNRESTRICTED);
diff --git a/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java b/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java
index b960d4c..b85db40 100644
--- a/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java
@@ -46,12 +46,15 @@
private AppOpsManager mAppOpsManager;
private InstrumentedPreferenceFragment mPreferenceFragment;
private UserManager mUserManager;
+ private boolean mEnableAppBatteryUsagePage;
public RestrictAppPreferenceController(Context context) {
super(context, KEY_RESTRICT_APP);
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mUserManager = context.getSystemService(UserManager.class);
mAppInfos = BatteryTipUtils.getRestrictedAppsList(mAppOpsManager, mUserManager);
+ mEnableAppBatteryUsagePage =
+ mContext.getResources().getBoolean(R.bool.config_app_battery_usage_list_enabled);
}
public RestrictAppPreferenceController(InstrumentedPreferenceFragment preferenceFragment) {
@@ -61,7 +64,8 @@
@Override
public int getAvailabilityStatus() {
- return mAppInfos.size() > 0 ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ return mAppInfos.size() > 0 && !mEnableAppBatteryUsagePage ? AVAILABLE
+ : CONDITIONALLY_UNAVAILABLE;
}
@Override
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
index d920a8e..d508603 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
@@ -36,6 +36,7 @@
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
private AppOpsManager mAppOpsManager;
private UserManager mUserManager;
+ private boolean mEnableAppBatteryUsagePage;
public BatteryManagerPreferenceController(Context context) {
super(context, KEY_BATTERY_MANAGER);
@@ -43,6 +44,8 @@
context).getPowerUsageFeatureProvider(context);
mAppOpsManager = context.getSystemService(AppOpsManager.class);
mUserManager = context.getSystemService(UserManager.class);
+ mEnableAppBatteryUsagePage =
+ mContext.getResources().getBoolean(R.bool.config_app_battery_usage_list_enabled);
}
@Override
@@ -53,9 +56,12 @@
@Override
public void updateState(Preference preference) {
super.updateState(preference);
- final int num = BatteryTipUtils.getRestrictedAppsList(mAppOpsManager, mUserManager).size();
+ if (!mEnableAppBatteryUsagePage) {
+ final int num = BatteryTipUtils.getRestrictedAppsList(mAppOpsManager,
+ mUserManager).size();
- updateSummary(preference, num);
+ updateSummary(preference, num);
+ }
}
@VisibleForTesting