Navigate more App List to SPA

Guarded by feature flag SETTINGS_ENABLE_SPA, default false.
When flag enabled, will navigate to the new App List pages
which are implemented by SPA.

Bug: 235727273
Test: Manual test with Settings app
Change-Id: I1905a92dd19f04c46476ce3157897ea609e590df
This commit is contained in:
Chaohui Wang
2022-11-08 10:56:54 +08:00
parent 61d661feb9
commit a2c045a717

View File

@@ -36,7 +36,6 @@ import static com.android.settings.applications.manageapplications.AppFilterRegi
import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_WORK; import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_WORK;
import static com.android.settings.search.actionbar.SearchMenuController.MENU_SEARCH; import static com.android.settings.search.actionbar.SearchMenuController.MENU_SEARCH;
import android.annotation.Nullable;
import android.annotation.StringRes; import android.annotation.StringRes;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
@@ -78,6 +77,7 @@ import android.widget.SearchView;
import android.widget.Spinner; import android.widget.Spinner;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread; import androidx.annotation.WorkerThread;
import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.coordinatorlayout.widget.CoordinatorLayout;
@@ -87,10 +87,16 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.compat.IPlatformCompat; import com.android.internal.compat.IPlatformCompat;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Settings; 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.GamesStorageActivity;
import com.android.settings.Settings.HighPowerApplicationsActivity; import com.android.settings.Settings.HighPowerApplicationsActivity;
import com.android.settings.Settings.ManageExternalSourcesActivity; 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.OverlaySettingsActivity;
import com.android.settings.Settings.StorageUseActivity; import com.android.settings.Settings.StorageUseActivity;
import com.android.settings.Settings.UsageAccessSettingsActivity; import com.android.settings.Settings.UsageAccessSettingsActivity;
@@ -133,7 +139,14 @@ import com.android.settings.notification.ConfigureNotificationSettings;
import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.app.AppNotificationSettings; import com.android.settings.notification.app.AppNotificationSettings;
import com.android.settings.spa.SpaActivity; 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.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.widget.LoadingViewController;
import com.android.settings.wifi.AppStateChangeWifiStateBridge; import com.android.settings.wifi.AppStateChangeWifiStateBridge;
import com.android.settings.wifi.ChangeWifiStateDetails; import com.android.settings.wifi.ChangeWifiStateDetails;
@@ -279,12 +292,43 @@ public class ManageApplications extends InstrumentedFragment
if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) { if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
return; return;
} }
Activity activity = getActivity(); final String spaDestination = getSpaDestination();
final String className = getClassName(activity.getIntent(), getArguments()); if (spaDestination != null) {
if (className.equals(ManageExternalSourcesActivity.class.getName())) { SpaActivity.startSpaActivity(context, spaDestination);
SpaActivity.startSpaActivity( getActivity().finish();
context, InstallUnknownAppsListProvider.INSTANCE.getAppListRoute()); }
activity.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();
} }
} }
@@ -330,23 +374,22 @@ public class ManageApplications extends InstrumentedFragment
} else if (className.equals(GamesStorageActivity.class.getName())) { } else if (className.equals(GamesStorageActivity.class.getName())) {
mListType = LIST_TYPE_GAMES; mListType = LIST_TYPE_GAMES;
mSortOrder = R.id.sort_order_size; mSortOrder = R.id.sort_order_size;
} else if (className.equals(Settings.ChangeWifiStateActivity.class.getName())) { } else if (className.equals(ChangeWifiStateActivity.class.getName())) {
mListType = LIST_TYPE_WIFI_ACCESS; mListType = LIST_TYPE_WIFI_ACCESS;
} else if (className.equals(Settings.ManageExternalStorageActivity.class.getName())) { } else if (className.equals(ManageExternalStorageActivity.class.getName())) {
mListType = LIST_MANAGE_EXTERNAL_STORAGE; mListType = LIST_MANAGE_EXTERNAL_STORAGE;
} else if (className.equals(Settings.MediaManagementAppsActivity.class.getName())) { } else if (className.equals(MediaManagementAppsActivity.class.getName())) {
mListType = LIST_TYPE_MEDIA_MANAGEMENT_APPS; mListType = LIST_TYPE_MEDIA_MANAGEMENT_APPS;
} else if (className.equals(Settings.AlarmsAndRemindersActivity.class.getName())) { } else if (className.equals(AlarmsAndRemindersActivity.class.getName())) {
mListType = LIST_TYPE_ALARMS_AND_REMINDERS; mListType = LIST_TYPE_ALARMS_AND_REMINDERS;
} else if (className.equals(Settings.NotificationAppListActivity.class.getName()) } else if (className.equals(NotificationAppListActivity.class.getName())
|| className.equals( || className.equals(NotificationReviewPermissionsActivity.class.getName())) {
Settings.NotificationReviewPermissionsActivity.class.getName())) {
mListType = LIST_TYPE_NOTIFICATION; mListType = LIST_TYPE_NOTIFICATION;
mUsageStatsManager = IUsageStatsManager.Stub.asInterface( mUsageStatsManager = IUsageStatsManager.Stub.asInterface(
ServiceManager.getService(Context.USAGE_STATS_SERVICE)); ServiceManager.getService(Context.USAGE_STATS_SERVICE));
mNotificationBackend = new NotificationBackend(); mNotificationBackend = new NotificationBackend();
mSortOrder = R.id.sort_order_recent_notification; mSortOrder = R.id.sort_order_recent_notification;
if (className.equals(Settings.NotificationReviewPermissionsActivity.class.getName())) { if (className.equals(NotificationReviewPermissionsActivity.class.getName())) {
// Special-case for a case where a user is directed to the all apps notification // 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. // preferences page via a notification prompt to review permissions settings.
android.provider.Settings.Global.putInt(getContext().getContentResolver(), android.provider.Settings.Global.putInt(getContext().getContentResolver(),
@@ -355,17 +398,17 @@ public class ManageApplications extends InstrumentedFragment
} }
} else if (className.equals(AppLocaleDetails.class.getName())) { } else if (className.equals(AppLocaleDetails.class.getName())) {
mListType = LIST_TYPE_APPS_LOCALE; mListType = LIST_TYPE_APPS_LOCALE;
} else if (className.equals(Settings.AppBatteryUsageActivity.class.getName())) { } else if (className.equals(AppBatteryUsageActivity.class.getName())) {
mListType = LIST_TYPE_BATTERY_OPTIMIZATION; mListType = LIST_TYPE_BATTERY_OPTIMIZATION;
} else { } else {
mListType = LIST_TYPE_MAIN; mListType = LIST_TYPE_MAIN;
} }
final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance(); final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
mFilter = appFilterRegistry.get(appFilterRegistry.getDefaultFilterType(mListType)); mFilter = appFilterRegistry.get(appFilterRegistry.getDefaultFilterType(mListType));
mIsPersonalOnly = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE) mIsPersonalOnly = args != null && args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.PERSONAL : false; == ProfileSelectFragment.ProfileType.PERSONAL;
mIsWorkOnly = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE) mIsWorkOnly = args != null && args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.WORK : false; == ProfileSelectFragment.ProfileType.WORK;
mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : UserHandle.myUserId(); mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : UserHandle.myUserId();
if (mIsWorkOnly && mWorkUserId == UserHandle.myUserId()) { if (mIsWorkOnly && mWorkUserId == UserHandle.myUserId()) {
mWorkUserId = Utils.getManagedProfileId(mUserManager, UserHandle.myUserId()); mWorkUserId = Utils.getManagedProfileId(mUserManager, UserHandle.myUserId());
@@ -958,31 +1001,31 @@ public class ManageApplications extends InstrumentedFragment
int screenTitle = intent.getIntExtra( int screenTitle = intent.getIntExtra(
SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.all_apps); SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.all_apps);
String className = getClassName(intent, args); String className = getClassName(intent, args);
if (className.equals(Settings.UsageAccessSettingsActivity.class.getName())) { if (className.equals(UsageAccessSettingsActivity.class.getName())) {
screenTitle = R.string.usage_access; screenTitle = R.string.usage_access;
} else if (className.equals(Settings.HighPowerApplicationsActivity.class.getName())) { } else if (className.equals(HighPowerApplicationsActivity.class.getName())) {
screenTitle = R.string.high_power_apps; screenTitle = R.string.high_power_apps;
} else if (className.equals(Settings.OverlaySettingsActivity.class.getName())) { } else if (className.equals(OverlaySettingsActivity.class.getName())) {
screenTitle = R.string.system_alert_window_settings; screenTitle = R.string.system_alert_window_settings;
} else if (className.equals(Settings.WriteSettingsActivity.class.getName())) { } else if (className.equals(WriteSettingsActivity.class.getName())) {
screenTitle = R.string.write_settings; screenTitle = R.string.write_settings;
} else if (className.equals(Settings.ManageExternalSourcesActivity.class.getName())) { } else if (className.equals(ManageExternalSourcesActivity.class.getName())) {
screenTitle = R.string.install_other_apps; screenTitle = R.string.install_other_apps;
} else if (className.equals(Settings.ChangeWifiStateActivity.class.getName())) { } else if (className.equals(ChangeWifiStateActivity.class.getName())) {
screenTitle = R.string.change_wifi_state_title; screenTitle = R.string.change_wifi_state_title;
} else if (className.equals(Settings.ManageExternalStorageActivity.class.getName())) { } else if (className.equals(ManageExternalStorageActivity.class.getName())) {
screenTitle = R.string.manage_external_storage_title; screenTitle = R.string.manage_external_storage_title;
} else if (className.equals(Settings.MediaManagementAppsActivity.class.getName())) { } else if (className.equals(MediaManagementAppsActivity.class.getName())) {
screenTitle = R.string.media_management_apps_title; screenTitle = R.string.media_management_apps_title;
} else if (className.equals(Settings.AlarmsAndRemindersActivity.class.getName())) { } else if (className.equals(AlarmsAndRemindersActivity.class.getName())) {
screenTitle = R.string.alarms_and_reminders_title; screenTitle = R.string.alarms_and_reminders_title;
} else if (className.equals(Settings.NotificationAppListActivity.class.getName()) } else if (className.equals(NotificationAppListActivity.class.getName())
|| className.equals( || className.equals(
Settings.NotificationReviewPermissionsActivity.class.getName())) { NotificationReviewPermissionsActivity.class.getName())) {
screenTitle = R.string.app_notifications_title; screenTitle = R.string.app_notifications_title;
} else if (className.equals(AppLocaleDetails.class.getName())) { } else if (className.equals(AppLocaleDetails.class.getName())) {
screenTitle = R.string.app_locales_picker_menu_title; screenTitle = R.string.app_locales_picker_menu_title;
} else if (className.equals(Settings.AppBatteryUsageActivity.class.getName())) { } else if (className.equals(AppBatteryUsageActivity.class.getName())) {
screenTitle = R.string.app_battery_usage_title; screenTitle = R.string.app_battery_usage_title;
} else { } else {
if (screenTitle == -1) { if (screenTitle == -1) {