Merge "Calculate list type first in ManageApplications"
This commit is contained in:
@@ -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;
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user