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.search.actionbar.SearchMenuController.MENU_SEARCH;
import android.annotation.Nullable;
import android.annotation.StringRes;
import android.app.Activity;
import android.app.ActivityManager;
@@ -78,6 +77,7 @@ import android.widget.SearchView;
import android.widget.Spinner;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
@@ -87,10 +87,16 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.compat.IPlatformCompat;
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.HighPowerApplicationsActivity;
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;
@@ -133,7 +139,14 @@ 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;
@@ -279,12 +292,43 @@ public class ManageApplications extends InstrumentedFragment
if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
return;
}
Activity activity = getActivity();
final String className = getClassName(activity.getIntent(), getArguments());
if (className.equals(ManageExternalSourcesActivity.class.getName())) {
SpaActivity.startSpaActivity(
context, InstallUnknownAppsListProvider.INSTANCE.getAppListRoute());
activity.finish();
final String spaDestination = getSpaDestination();
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();
}
}
@@ -330,23 +374,22 @@ public class ManageApplications extends InstrumentedFragment
} else if (className.equals(GamesStorageActivity.class.getName())) {
mListType = LIST_TYPE_GAMES;
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;
} else if (className.equals(Settings.ManageExternalStorageActivity.class.getName())) {
} else if (className.equals(ManageExternalStorageActivity.class.getName())) {
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;
} else if (className.equals(Settings.AlarmsAndRemindersActivity.class.getName())) {
} else if (className.equals(AlarmsAndRemindersActivity.class.getName())) {
mListType = LIST_TYPE_ALARMS_AND_REMINDERS;
} else if (className.equals(Settings.NotificationAppListActivity.class.getName())
|| className.equals(
Settings.NotificationReviewPermissionsActivity.class.getName())) {
} 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(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
// preferences page via a notification prompt to review permissions settings.
android.provider.Settings.Global.putInt(getContext().getContentResolver(),
@@ -355,17 +398,17 @@ public class ManageApplications extends InstrumentedFragment
}
} else if (className.equals(AppLocaleDetails.class.getName())) {
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;
} else {
mListType = LIST_TYPE_MAIN;
}
final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
mFilter = appFilterRegistry.get(appFilterRegistry.getDefaultFilterType(mListType));
mIsPersonalOnly = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.PERSONAL : false;
mIsWorkOnly = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.WORK : false;
mIsPersonalOnly = args != null && args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.PERSONAL;
mIsWorkOnly = args != null && args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
== ProfileSelectFragment.ProfileType.WORK;
mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : UserHandle.myUserId();
if (mIsWorkOnly && mWorkUserId == UserHandle.myUserId()) {
mWorkUserId = Utils.getManagedProfileId(mUserManager, UserHandle.myUserId());
@@ -958,31 +1001,31 @@ public class ManageApplications extends InstrumentedFragment
int screenTitle = intent.getIntExtra(
SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.all_apps);
String className = getClassName(intent, args);
if (className.equals(Settings.UsageAccessSettingsActivity.class.getName())) {
if (className.equals(UsageAccessSettingsActivity.class.getName())) {
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;
} else if (className.equals(Settings.OverlaySettingsActivity.class.getName())) {
} else if (className.equals(OverlaySettingsActivity.class.getName())) {
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;
} else if (className.equals(Settings.ManageExternalSourcesActivity.class.getName())) {
} else if (className.equals(ManageExternalSourcesActivity.class.getName())) {
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;
} else if (className.equals(Settings.ManageExternalStorageActivity.class.getName())) {
} else if (className.equals(ManageExternalStorageActivity.class.getName())) {
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;
} else if (className.equals(Settings.AlarmsAndRemindersActivity.class.getName())) {
} else if (className.equals(AlarmsAndRemindersActivity.class.getName())) {
screenTitle = R.string.alarms_and_reminders_title;
} else if (className.equals(Settings.NotificationAppListActivity.class.getName())
} else if (className.equals(NotificationAppListActivity.class.getName())
|| className.equals(
Settings.NotificationReviewPermissionsActivity.class.getName())) {
NotificationReviewPermissionsActivity.class.getName())) {
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.AppBatteryUsageActivity.class.getName())) {
} else if (className.equals(AppBatteryUsageActivity.class.getName())) {
screenTitle = R.string.app_battery_usage_title;
} else {
if (screenTitle == -1) {