Merge "Redirect the TogglePermission App Info pages"

This commit is contained in:
Chaohui Wang
2023-01-05 03:49:52 +00:00
committed by Android (Google) Code Review
3 changed files with 83 additions and 13 deletions

View File

@@ -572,6 +572,11 @@ public class SettingsActivity extends SettingsBaseActivity
@VisibleForTesting
void launchSettingFragment(String initialFragmentName, Intent intent) {
if (initialFragmentName != null) {
if (SettingsActivityUtil.launchSpaActivity(this, initialFragmentName, intent)) {
finish();
return;
}
setTitleFromIntent(intent);
Bundle initialArguments = intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);

View File

@@ -0,0 +1,78 @@
/*
* 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
import android.content.Context
import android.content.Intent
import android.util.FeatureFlagUtils
import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails
import com.android.settings.applications.appinfo.DrawOverlayDetails
import com.android.settings.applications.appinfo.ExternalSourcesDetails
import com.android.settings.applications.appinfo.ManageExternalStorageDetails
import com.android.settings.applications.appinfo.MediaManagementAppsDetails
import com.android.settings.applications.appinfo.WriteSettingsDetails
import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureDetails
import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureSettings
import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
import com.android.settings.spa.SpaActivity.Companion.startSpaActivityForApp
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.app.specialaccess.PictureInPictureListProvider
object SettingsActivityUtil {
private val FRAGMENT_TO_SPA_DESTINATION_MAP = mapOf(
PictureInPictureSettings::class.qualifiedName to
PictureInPictureListProvider.getAppListRoute(),
)
private val FRAGMENT_TO_SPA_APP_DESTINATION_PREFIX_MAP = mapOf(
PictureInPictureDetails::class.qualifiedName to
PictureInPictureListProvider.getAppInfoRoutePrefix(),
DrawOverlayDetails::class.qualifiedName to
DisplayOverOtherAppsAppListProvider.getAppInfoRoutePrefix(),
WriteSettingsDetails::class.qualifiedName to
ModifySystemSettingsAppListProvider.getAppInfoRoutePrefix(),
AlarmsAndRemindersDetails::class.qualifiedName to
AlarmsAndRemindersAppListProvider.getAppInfoRoutePrefix(),
ExternalSourcesDetails::class.qualifiedName to
InstallUnknownAppsListProvider.getAppInfoRoutePrefix(),
ManageExternalStorageDetails::class.qualifiedName to
AllFilesAccessAppListProvider.getAppInfoRoutePrefix(),
MediaManagementAppsDetails::class.qualifiedName to
MediaManagementAppsAppListProvider.getAppInfoRoutePrefix(),
)
@JvmStatic
fun Context.launchSpaActivity(fragmentName: String, intent: Intent): Boolean {
if (!FeatureFlagUtils.isEnabled(this, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
return false
}
FRAGMENT_TO_SPA_DESTINATION_MAP[fragmentName]?.let { destination ->
startSpaActivity(destination)
return true
}
FRAGMENT_TO_SPA_APP_DESTINATION_PREFIX_MAP[fragmentName]?.let { appDestinationPrefix ->
startSpaActivityForApp(appDestinationPrefix, intent)
return true
}
return false
}
}

View File

@@ -28,7 +28,6 @@ import android.content.pm.UserInfo;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.FeatureFlagUtils;
import android.util.IconDrawableFactory;
import android.util.Pair;
import android.view.View;
@@ -41,8 +40,6 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.spa.SpaActivity;
import com.android.settings.spa.app.specialaccess.PictureInPictureListProvider;
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.AppPreference;
@@ -129,16 +126,6 @@ public class PictureInPictureSettings extends EmptyTextSettings {
mUserManager = um;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
SpaActivity.startSpaActivity(
context, PictureInPictureListProvider.INSTANCE.getAppListRoute());
finish();
}
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);