Add Apps > Battery optimization page implementation.
Moving the old restricted page to the new optimization page will happen in a follow-up CL. Test: Unit, manual Bug: 238026672 Change-Id: I5fee9ebe03284a013da6bfca9ada8b166c6af91c
This commit is contained in:
@@ -21,6 +21,9 @@ import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
|
||||
|
||||
import static com.android.settings.ChangeIds.CHANGE_RESTRICT_SAW_INTENT;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_ALL;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_BATTERY_OPTIMIZED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_BATTERY_RESTRICTED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_BATTERY_UNRESTRICTED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_BLOCKED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_DISABLED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_ENABLED;
|
||||
@@ -96,6 +99,7 @@ import com.android.settings.applications.AppInfoBase;
|
||||
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.AppStateInstallAppsBridge;
|
||||
import com.android.settings.applications.AppStateLocaleBridge;
|
||||
import com.android.settings.applications.AppStateManageExternalStorageBridge;
|
||||
@@ -120,6 +124,7 @@ import com.android.settings.applications.appinfo.WriteSettingsDetails;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
|
||||
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
||||
import com.android.settings.fuelgauge.HighPowerDetail;
|
||||
import com.android.settings.localepicker.AppLocalePickerActivity;
|
||||
import com.android.settings.notification.ConfigureNotificationSettings;
|
||||
@@ -229,6 +234,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
public static final int LIST_TYPE_ALARMS_AND_REMINDERS = 12;
|
||||
public static final int LIST_TYPE_MEDIA_MANAGEMENT_APPS = 13;
|
||||
public static final int LIST_TYPE_APPS_LOCALE = 14;
|
||||
public static final int LIST_TYPE_BATTERY_OPTIMIZATION = 15;
|
||||
|
||||
// List types that should show instant apps.
|
||||
public static final Set<Integer> LIST_TYPES_WITH_INSTANT = new ArraySet<>(Arrays.asList(
|
||||
@@ -327,6 +333,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
}
|
||||
} else if (className.equals(AppLocaleDetails.class.getName())) {
|
||||
mListType = LIST_TYPE_APPS_LOCALE;
|
||||
} else if (className.equals(Settings.AppBatteryOptimizationActivity.class.getName())) {
|
||||
mListType = LIST_TYPE_BATTERY_OPTIMIZATION;
|
||||
} else {
|
||||
mListType = LIST_TYPE_MAIN;
|
||||
}
|
||||
@@ -460,6 +468,12 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (mListType == LIST_TYPE_HIGH_POWER) {
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_POWER_ALLOWLIST_ALL);
|
||||
}
|
||||
if (mListType == LIST_TYPE_BATTERY_OPTIMIZATION) {
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_ALL);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_BATTERY_UNRESTRICTED);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_BATTERY_OPTIMIZED);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_BATTERY_RESTRICTED);
|
||||
}
|
||||
|
||||
setCompositeFilter();
|
||||
}
|
||||
@@ -511,6 +525,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
return SettingsEnums.MEDIA_MANAGEMENT_APPS;
|
||||
case LIST_TYPE_APPS_LOCALE:
|
||||
return SettingsEnums.APPS_LOCALE_LIST;
|
||||
case LIST_TYPE_BATTERY_OPTIMIZATION:
|
||||
return SettingsEnums.BATTERY_OPTIMIZED_APPS_LIST;
|
||||
default:
|
||||
return SettingsEnums.PAGE_UNKNOWN;
|
||||
}
|
||||
@@ -641,6 +657,10 @@ public class ManageApplications extends InstrumentedFragment
|
||||
intent.putExtra(AppInfoBase.ARG_PACKAGE_UID, mCurrentUid);
|
||||
startActivity(intent);
|
||||
break;
|
||||
case LIST_TYPE_BATTERY_OPTIMIZATION:
|
||||
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
||||
getActivity(), this, mCurrentPkgName);
|
||||
break;
|
||||
// TODO: Figure out if there is a way where we can spin up the profile's settings
|
||||
// process ahead of time, to avoid a long load of data when user clicks on a managed
|
||||
// app. Maybe when they load the list of apps that contains managed profile apps.
|
||||
@@ -923,6 +943,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
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())) {
|
||||
screenTitle = R.string.app_battery_optimization_title;
|
||||
} else {
|
||||
if (screenTitle == -1) {
|
||||
screenTitle = R.string.all_apps;
|
||||
@@ -1115,6 +1137,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
mExtraInfoBridge = new AppStateMediaManagementAppsBridge(mContext, mState, this);
|
||||
} 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);
|
||||
} else {
|
||||
mExtraInfoBridge = null;
|
||||
}
|
||||
@@ -1146,18 +1170,21 @@ public class ManageApplications extends InstrumentedFragment
|
||||
|
||||
public void setFilter(AppFilterItem appFilter) {
|
||||
mAppFilter = appFilter;
|
||||
final int filterType = appFilter.getFilterType();
|
||||
|
||||
// Notification filters require resorting the list
|
||||
if (mManageApplications.mListType == LIST_TYPE_NOTIFICATION) {
|
||||
if (FILTER_APPS_FREQUENT == appFilter.getFilterType()) {
|
||||
if (FILTER_APPS_FREQUENT == filterType) {
|
||||
rebuild(R.id.sort_order_frequent_notification, false);
|
||||
} else if (FILTER_APPS_RECENT == appFilter.getFilterType()) {
|
||||
} else if (FILTER_APPS_RECENT == filterType) {
|
||||
rebuild(R.id.sort_order_recent_notification, false);
|
||||
} else if (FILTER_APPS_BLOCKED == appFilter.getFilterType()) {
|
||||
} else if (FILTER_APPS_BLOCKED == filterType) {
|
||||
rebuild(R.id.sort_order_alpha, true);
|
||||
} else {
|
||||
rebuild(R.id.sort_order_alpha, true);
|
||||
}
|
||||
} else if (mManageApplications.mListType == LIST_TYPE_BATTERY_OPTIMIZATION) {
|
||||
logBatteryOptimization(filterType);
|
||||
} else {
|
||||
rebuild();
|
||||
}
|
||||
@@ -1294,6 +1321,26 @@ public class ManageApplications extends InstrumentedFragment
|
||||
});
|
||||
}
|
||||
|
||||
private void logBatteryOptimization(int filterType) {
|
||||
switch(filterType) {
|
||||
case FILTER_APPS_BATTERY_UNRESTRICTED:
|
||||
logAction(SettingsEnums.ACTION_BATTERY_OPTIMIZED_APPS_FILTER_UNRESTRICTED);
|
||||
break;
|
||||
case FILTER_APPS_BATTERY_OPTIMIZED:
|
||||
logAction(SettingsEnums.ACTION_BATTERY_OPTIMIZED_APPS_FILTER_OPTIMIZED);
|
||||
break;
|
||||
case FILTER_APPS_BATTERY_RESTRICTED:
|
||||
logAction(SettingsEnums.ACTION_BATTERY_OPTIMIZED_APPS_FILTER_RESTRICTED);
|
||||
break;
|
||||
default:
|
||||
logAction(SettingsEnums.ACTION_BATTERY_OPTIMIZED_APPS_FILTER_ALL_APPS);
|
||||
}
|
||||
}
|
||||
|
||||
private void logAction(int action) {
|
||||
mManageApplications.mMetricsFeatureProvider.action(mContext, action);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void filterSearch(String query) {
|
||||
if (mSearchFilter == null) {
|
||||
|
Reference in New Issue
Block a user