diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index e1299541642..fa5852e5427 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -58,9 +58,9 @@ import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.preference.PreferenceFrameLayout; +import android.provider.Settings; import android.text.TextUtils; import android.util.ArraySet; -import android.util.FeatureFlagUtils; import android.util.IconDrawableFactory; import android.util.Log; import android.view.LayoutInflater; @@ -92,7 +92,6 @@ import com.android.settings.R; import com.android.settings.Settings.AlarmsAndRemindersActivity; import com.android.settings.Settings.AppBatteryUsageActivity; import com.android.settings.Settings.ChangeWifiStateActivity; -import com.android.settings.Settings.GamesStorageActivity; import com.android.settings.Settings.HighPowerApplicationsActivity; import com.android.settings.Settings.LongBackgroundTasksActivity; import com.android.settings.Settings.ManageExternalSourcesActivity; @@ -101,7 +100,6 @@ import com.android.settings.Settings.MediaManagementAppsActivity; import com.android.settings.Settings.NotificationAppListActivity; import com.android.settings.Settings.NotificationReviewPermissionsActivity; import com.android.settings.Settings.OverlaySettingsActivity; -import com.android.settings.Settings.StorageUseActivity; import com.android.settings.Settings.UsageAccessSettingsActivity; import com.android.settings.Settings.WriteSettingsActivity; import com.android.settings.SettingsActivity; @@ -144,14 +142,6 @@ import com.android.settings.notification.ConfigureNotificationSettings; import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.app.AppNotificationSettings; import com.android.settings.spa.SpaActivity; -import com.android.settings.spa.app.AllAppListPageProvider; -import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider; -import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider; -import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider; -import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider; -import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider; -import com.android.settings.spa.notification.AppListNotificationsPageProvider; -import com.android.settings.spa.system.AppLanguagesPageProvider; import com.android.settings.widget.LoadingViewController; import com.android.settings.wifi.AppStateChangeWifiStateBridge; import com.android.settings.wifi.ChangeWifiStateDetails; @@ -295,47 +285,18 @@ public class ManageApplications extends InstrumentedFragment public void onAttach(Context context) { super.onAttach(context); - if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) { - return; - } - final String spaDestination = getSpaDestination(); + mListType = getListType(); + final String spaDestination = ManageApplicationsUtil.getSpaDestination(context, mListType); if (spaDestination != null) { SpaActivity.startSpaActivity(context, spaDestination); getActivity().finish(); } } - @Nullable - private String getSpaDestination() { - final String className = getClassName(getActivity().getIntent(), getArguments()); - if (className.equals(UsageAccessSettingsActivity.class.getName())) { - return null; - } else if (className.equals(HighPowerApplicationsActivity.class.getName())) { - return null; - } else if (className.equals(OverlaySettingsActivity.class.getName())) { - return DisplayOverOtherAppsAppListProvider.INSTANCE.getAppListRoute(); - } else if (className.equals(WriteSettingsActivity.class.getName())) { - return ModifySystemSettingsAppListProvider.INSTANCE.getAppListRoute(); - } else if (className.equals(ManageExternalSourcesActivity.class.getName())) { - return InstallUnknownAppsListProvider.INSTANCE.getAppListRoute(); - } else if (className.equals(ChangeWifiStateActivity.class.getName())) { - return null; - } else if (className.equals(ManageExternalStorageActivity.class.getName())) { - return AllFilesAccessAppListProvider.INSTANCE.getAppListRoute(); - } else if (className.equals(MediaManagementAppsActivity.class.getName())) { - return MediaManagementAppsAppListProvider.INSTANCE.getAppListRoute(); - } else if (className.equals(AlarmsAndRemindersActivity.class.getName())) { - return null; - } else if (className.equals(NotificationAppListActivity.class.getName()) - || className.equals(NotificationReviewPermissionsActivity.class.getName())) { - return AppListNotificationsPageProvider.INSTANCE.getName(); - } else if (className.equals(AppLocaleDetails.class.getName())) { - return AppLanguagesPageProvider.INSTANCE.getName(); - } else if (className.equals(AppBatteryUsageActivity.class.getName())) { - return null; - } else { - return AllAppListPageProvider.INSTANCE.getName(); - } + private int getListType() { + Bundle args = getArguments(); + final String className = getClassName(getActivity().getIntent(), args); + return ManageApplicationsUtil.LIST_TYPE_MAP.getOrDefault(className, LIST_TYPE_MAIN); } @Override @@ -353,63 +314,40 @@ public class ManageApplications extends InstrumentedFragment Bundle args = getArguments(); final int screenTitle = getTitleResId(intent, args); final String className = getClassName(intent, args); - if (className.equals(StorageUseActivity.class.getName())) { - if (args != null && args.containsKey(EXTRA_VOLUME_UUID)) { - mVolumeUuid = args.getString(EXTRA_VOLUME_UUID); - mStorageType = args.getInt(EXTRA_STORAGE_TYPE, STORAGE_TYPE_DEFAULT); - mListType = LIST_TYPE_STORAGE; - } else { - // No volume selected, display a normal list, sorted by size. - mListType = LIST_TYPE_MAIN; - } - mSortOrder = R.id.sort_order_size; - } else if (className.equals(UsageAccessSettingsActivity.class.getName())) { - mListType = LIST_TYPE_USAGE_ACCESS; - } else if (className.equals(HighPowerApplicationsActivity.class.getName())) { - mListType = LIST_TYPE_HIGH_POWER; - // Default to showing system. - mShowSystem = true; - } else if (className.equals(OverlaySettingsActivity.class.getName())) { - mListType = LIST_TYPE_OVERLAY; - - reportIfRestrictedSawIntent(intent); - } else if (className.equals(WriteSettingsActivity.class.getName())) { - mListType = LIST_TYPE_WRITE_SETTINGS; - } else if (className.equals(ManageExternalSourcesActivity.class.getName())) { - mListType = LIST_TYPE_MANAGE_SOURCES; - } else if (className.equals(GamesStorageActivity.class.getName())) { - mListType = LIST_TYPE_GAMES; - mSortOrder = R.id.sort_order_size; - } else if (className.equals(ChangeWifiStateActivity.class.getName())) { - mListType = LIST_TYPE_WIFI_ACCESS; - } else if (className.equals(ManageExternalStorageActivity.class.getName())) { - mListType = LIST_MANAGE_EXTERNAL_STORAGE; - } else if (className.equals(MediaManagementAppsActivity.class.getName())) { - mListType = LIST_TYPE_MEDIA_MANAGEMENT_APPS; - } else if (className.equals(AlarmsAndRemindersActivity.class.getName())) { - mListType = LIST_TYPE_ALARMS_AND_REMINDERS; - } else if (className.equals(NotificationAppListActivity.class.getName()) - || className.equals(NotificationReviewPermissionsActivity.class.getName())) { - mListType = LIST_TYPE_NOTIFICATION; - mUsageStatsManager = IUsageStatsManager.Stub.asInterface( - ServiceManager.getService(Context.USAGE_STATS_SERVICE)); - mNotificationBackend = new NotificationBackend(); - mSortOrder = R.id.sort_order_recent_notification; - if (className.equals(NotificationReviewPermissionsActivity.class.getName())) { - // Special-case for a case where a user is directed to the all apps notification - // preferences page via a notification prompt to review permissions settings. - android.provider.Settings.Global.putInt(getContext().getContentResolver(), - android.provider.Settings.Global.REVIEW_PERMISSIONS_NOTIFICATION_STATE, - 1); // USER_INTERACTED - } - } else if (className.equals(AppLocaleDetails.class.getName())) { - mListType = LIST_TYPE_APPS_LOCALE; - } else if (className.equals(AppBatteryUsageActivity.class.getName())) { - mListType = LIST_TYPE_BATTERY_OPTIMIZATION; - } else if (className.equals(LongBackgroundTasksActivity.class.getName())) { - mListType = LIST_TYPE_LONG_BACKGROUND_TASKS; - } else { - mListType = LIST_TYPE_MAIN; + switch (mListType) { + case LIST_TYPE_STORAGE: + if (args != null && args.containsKey(EXTRA_VOLUME_UUID)) { + mVolumeUuid = args.getString(EXTRA_VOLUME_UUID); + mStorageType = args.getInt(EXTRA_STORAGE_TYPE, STORAGE_TYPE_DEFAULT); + } else { + // No volume selected, display a normal list, sorted by size. + mListType = LIST_TYPE_MAIN; + } + mSortOrder = R.id.sort_order_size; + break; + case LIST_TYPE_HIGH_POWER: + // Default to showing system. + mShowSystem = true; + break; + case LIST_TYPE_OVERLAY: + reportIfRestrictedSawIntent(intent); + break; + case LIST_TYPE_GAMES: + mSortOrder = R.id.sort_order_size; + break; + case LIST_TYPE_NOTIFICATION: + mUsageStatsManager = IUsageStatsManager.Stub.asInterface( + ServiceManager.getService(Context.USAGE_STATS_SERVICE)); + mNotificationBackend = new NotificationBackend(); + mSortOrder = R.id.sort_order_recent_notification; + if (className.equals(NotificationReviewPermissionsActivity.class.getName())) { + // Special-case for a case where a user is directed to the all apps notification + // preferences page via a notification prompt to review permissions settings. + Settings.Global.putInt(getContext().getContentResolver(), + Settings.Global.REVIEW_PERMISSIONS_NOTIFICATION_STATE, + 1); // USER_INTERACTED + } + break; } final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance(); mFilter = appFilterRegistry.get(appFilterRegistry.getDefaultFilterType(mListType)); @@ -909,8 +847,7 @@ public class ManageApplications extends InstrumentedFragment .setResultListener(this, ADVANCED_SETTINGS) .launch(); } else { - Intent intent = new Intent( - android.provider.Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS); + Intent intent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS); startActivityForResult(intent, ADVANCED_SETTINGS); } return true; diff --git a/src/com/android/settings/applications/manageapplications/ManageApplicationsUtil.kt b/src/com/android/settings/applications/manageapplications/ManageApplicationsUtil.kt new file mode 100644 index 00000000000..544b68de009 --- /dev/null +++ b/src/com/android/settings/applications/manageapplications/ManageApplicationsUtil.kt @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2022 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.manageapplications + +import android.content.Context +import android.util.FeatureFlagUtils +import com.android.settings.Settings.AlarmsAndRemindersActivity +import com.android.settings.Settings.AppBatteryUsageActivity +import com.android.settings.Settings.ChangeWifiStateActivity +import com.android.settings.Settings.GamesStorageActivity +import com.android.settings.Settings.HighPowerApplicationsActivity +import com.android.settings.Settings.LongBackgroundTasksActivity +import com.android.settings.Settings.ManageExternalSourcesActivity +import com.android.settings.Settings.ManageExternalStorageActivity +import com.android.settings.Settings.MediaManagementAppsActivity +import com.android.settings.Settings.NotificationAppListActivity +import com.android.settings.Settings.NotificationReviewPermissionsActivity +import com.android.settings.Settings.OverlaySettingsActivity +import com.android.settings.Settings.StorageUseActivity +import com.android.settings.Settings.UsageAccessSettingsActivity +import com.android.settings.Settings.WriteSettingsActivity +import com.android.settings.applications.appinfo.AppLocaleDetails +import com.android.settings.applications.manageapplications.ManageApplications.LIST_MANAGE_EXTERNAL_STORAGE +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_ALARMS_AND_REMINDERS +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_APPS_LOCALE +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_BATTERY_OPTIMIZATION +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_GAMES +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_HIGH_POWER +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_LONG_BACKGROUND_TASKS +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MAIN +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MANAGE_SOURCES +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MEDIA_MANAGEMENT_APPS +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NOTIFICATION +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_OVERLAY +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_STORAGE +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_USAGE_ACCESS +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_WIFI_ACCESS +import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_WRITE_SETTINGS +import com.android.settings.spa.app.AllAppListPageProvider +import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider +import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider +import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider +import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider +import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider +import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider +import com.android.settings.spa.notification.AppListNotificationsPageProvider +import com.android.settings.spa.system.AppLanguagesPageProvider + +/** + * Utils for [ManageApplications]. + */ +object ManageApplicationsUtil { + private val LIST_TYPE_CLASS_MAP = mapOf( + StorageUseActivity::class to LIST_TYPE_STORAGE, + UsageAccessSettingsActivity::class to LIST_TYPE_USAGE_ACCESS, + HighPowerApplicationsActivity::class to LIST_TYPE_HIGH_POWER, + OverlaySettingsActivity::class to LIST_TYPE_OVERLAY, + WriteSettingsActivity::class to LIST_TYPE_WRITE_SETTINGS, + ManageExternalSourcesActivity::class to LIST_TYPE_MANAGE_SOURCES, + GamesStorageActivity::class to LIST_TYPE_GAMES, + ChangeWifiStateActivity::class to LIST_TYPE_WIFI_ACCESS, + ManageExternalStorageActivity::class to LIST_MANAGE_EXTERNAL_STORAGE, + MediaManagementAppsActivity::class to LIST_TYPE_MEDIA_MANAGEMENT_APPS, + AlarmsAndRemindersActivity::class to LIST_TYPE_ALARMS_AND_REMINDERS, + NotificationAppListActivity::class to LIST_TYPE_NOTIFICATION, + NotificationReviewPermissionsActivity::class to LIST_TYPE_NOTIFICATION, + AppLocaleDetails::class to LIST_TYPE_APPS_LOCALE, + AppBatteryUsageActivity::class to LIST_TYPE_BATTERY_OPTIMIZATION, + LongBackgroundTasksActivity::class to LIST_TYPE_LONG_BACKGROUND_TASKS, + ) + + @JvmField + val LIST_TYPE_MAP = LIST_TYPE_CLASS_MAP.mapKeys { it.key.java.name } + + @JvmStatic + fun getSpaDestination(context: Context, listType: Int): String? { + if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) { + return null + } + return when (listType) { + LIST_TYPE_OVERLAY -> DisplayOverOtherAppsAppListProvider.getAppListRoute() + LIST_TYPE_WRITE_SETTINGS -> ModifySystemSettingsAppListProvider.getAppListRoute() + LIST_TYPE_MANAGE_SOURCES -> InstallUnknownAppsListProvider.getAppListRoute() + LIST_MANAGE_EXTERNAL_STORAGE -> AllFilesAccessAppListProvider.getAppListRoute() + LIST_TYPE_MEDIA_MANAGEMENT_APPS -> MediaManagementAppsAppListProvider.getAppListRoute() + LIST_TYPE_ALARMS_AND_REMINDERS -> AlarmsAndRemindersAppListProvider.getAppListRoute() + LIST_TYPE_NOTIFICATION -> AppListNotificationsPageProvider.name + LIST_TYPE_APPS_LOCALE -> AppLanguagesPageProvider.name + LIST_TYPE_MAIN -> AllAppListPageProvider.name + else -> null + } + } +}