Migrate more settings to use SubSettingsLauncher
Bug: 73250851
Test: robotests
Change-Id: I08f6f380489646231d6d8ceb1488e2efb036bf69
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 4f5c6b9..f66b1f9 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -56,6 +56,7 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtils;
@@ -156,12 +157,15 @@
@VisibleForTesting
void showFinalConfirmation() {
- Bundle args = new Bundle();
+ final Bundle args = new Bundle();
args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked());
args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked());
- ((SettingsActivity) getActivity()).startPreferencePanel(
- this, MasterClearConfirm.class.getName(),
- args, R.string.master_clear_confirm_title, null, null, 0);
+ new SubSettingLauncher(getContext())
+ .setDestination(MasterClearConfirm.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.master_clear_confirm_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
}
@VisibleForTesting
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 5cbee63..8043750 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -44,6 +44,7 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants;
import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtils;
@@ -118,9 +119,12 @@
args.putInt(PhoneConstants.SUBSCRIPTION_KEY, subscription.getSubscriptionId());
}
args.putBoolean(MasterClear.ERASE_ESIMS_EXTRA, mEsimCheckbox.isChecked());
- ((SettingsActivity) getActivity()).startPreferencePanel(
- this, ResetNetworkConfirm.class.getName(),
- args, R.string.reset_network_confirm_title, null, null, 0);
+ new SubSettingLauncher(getContext())
+ .setDestination(ResetNetworkConfirm.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.reset_network_confirm_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
}
/**
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 84b1071..d28eed6 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -66,6 +66,7 @@
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wfd.WifiDisplaySettings;
import com.android.settings.widget.SwitchBar;
+import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
import com.android.settingslib.development.DevelopmentSettingsEnabler;
@@ -200,7 +201,14 @@
@Override
public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
- startPreferencePanel(caller, pref.getFragment(), pref.getExtras(), -1, null, null, 0);
+ new SubSettingLauncher(this)
+ .setDestination(pref.getFragment())
+ .setArguments(pref.getExtras())
+ .setSourceMetricsCategory(caller instanceof Instrumentable
+ ? ((Instrumentable) caller).getMetricsCategory()
+ : Instrumentable.METRICS_CATEGORY_UNKNOWN)
+ .setTitle(-1)
+ .launch();
return true;
}
@@ -594,6 +602,7 @@
* @param resultRequestCode If resultTo is non-null, this is the caller's
* request code to be received with the result.
*/
+ @Deprecated
public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args,
int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) {
String title = null;
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 6127ab9..268cb44 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -47,10 +47,10 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.AccessiblePreferenceCategory;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settingslib.RestrictedPreference;
@@ -246,19 +246,19 @@
if (preference == profileData.managedProfilePreference) {
Bundle arguments = new Bundle();
arguments.putParcelable(Intent.EXTRA_USER, profileData.userInfo.getUserHandle());
- ((SettingsActivity) mParent.getActivity()).startPreferencePanel(mParent,
- ManagedProfileSettings.class.getName(), arguments,
- R.string.managed_profile_settings_title, null, null, 0);
+ new SubSettingLauncher(mContext)
+ .setSourceMetricsCategory(mParent.getMetricsCategory())
+ .setDestination(ManagedProfileSettings.class.getName())
+ .setTitle(R.string.managed_profile_settings_title)
+ .setArguments(arguments)
+ .launch();
+
return true;
}
}
return false;
}
- SparseArray<ProfileData> getProfileData() {
- return mProfiles;
- }
-
private void updateUi() {
if (!isAvailable()) {
// This should not happen
diff --git a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
index 0e19dab..a90a3d3 100644
--- a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
+++ b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
@@ -38,10 +38,11 @@
import android.util.Log;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.location.LocationSettings;
import com.android.settings.utils.LocalClassLoaderContextThemeWrapper;
import com.android.settingslib.accounts.AuthenticatorHelper;
+import com.android.settingslib.core.instrumentation.Instrumentable;
/**
* Class to load the preference screen to be added to the settings page for the specific account
@@ -230,8 +231,15 @@
@Override
public boolean onPreferenceClick(Preference preference) {
- ((SettingsActivity) mFragment.getActivity()).startPreferencePanel(mFragment,
- mClass, null, mTitleRes, null, null, 0);
+ final int metricsCategory = (mFragment instanceof Instrumentable)
+ ? ((Instrumentable) mFragment).getMetricsCategory()
+ : Instrumentable.METRICS_CATEGORY_UNKNOWN;
+ new SubSettingLauncher(preference.getContext())
+ .setTitle(mTitleRes)
+ .setDestination(mClass)
+ .setSourceMetricsCategory(metricsCategory)
+ .launch();
+
// Hack: announce that the Google account preferences page is launching the location
// settings
if (mClass.equals(LocationSettings.class.getName())) {
diff --git a/src/com/android/settings/applications/ConvertToFbe.java b/src/com/android/settings/applications/ConvertToFbe.java
index 5f5ebd9..70ee415 100644
--- a/src/com/android/settings/applications/ConvertToFbe.java
+++ b/src/com/android/settings/applications/ConvertToFbe.java
@@ -27,22 +27,21 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.password.ChooseLockSettingsHelper;
/* Class to prompt for conversion of userdata to file based encryption
*/
public class ConvertToFbe extends InstrumentedFragment {
static final String TAG = "ConvertToFBE";
- static final String CONVERT_FBE_EXTRA = "ConvertFBE";
private static final int KEYGUARD_REQUEST = 55;
private boolean runKeyguardConfirmation(int request) {
Resources res = getActivity().getResources();
return new ChooseLockSettingsHelper(getActivity(), this)
- .launchConfirmationActivity(request,
- res.getText(R.string.convert_to_file_encryption));
+ .launchConfirmationActivity(request,
+ res.getText(R.string.convert_to_file_encryption));
}
@Override
@@ -53,15 +52,13 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
+ Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.convert_fbe, null);
- final Button button = (Button) rootView.findViewById(R.id.button_convert_fbe);
- button.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- if(!runKeyguardConfirmation(KEYGUARD_REQUEST)) {
- convert();
- }
+ final Button button = rootView.findViewById(R.id.button_convert_fbe);
+ button.setOnClickListener(v -> {
+ if (!runKeyguardConfirmation(KEYGUARD_REQUEST)) {
+ convert();
}
});
@@ -84,9 +81,11 @@
}
private void convert() {
- SettingsActivity sa = (SettingsActivity) getActivity();
- sa.startPreferencePanel(this, ConfirmConvertToFbe.class.getName(), null,
- R.string.convert_to_file_encryption, null, null, 0);
+ new SubSettingLauncher(getContext())
+ .setDestination(ConfirmConvertToFbe.class.getName())
+ .setTitle(R.string.convert_to_file_encryption)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
}
@Override
diff --git a/src/com/android/settings/applications/ProcessStatsBase.java b/src/com/android/settings/applications/ProcessStatsBase.java
index b98d0ba..67a324b 100644
--- a/src/com/android/settings/applications/ProcessStatsBase.java
+++ b/src/com/android/settings/applications/ProcessStatsBase.java
@@ -28,6 +28,8 @@
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.ProcStatsData.MemInfo;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.core.instrumentation.Instrumentable;
public abstract class ProcessStatsBase extends SettingsPreferenceFragment
implements OnItemSelectedListener {
@@ -44,9 +46,9 @@
// smaller than the actual time selected instead of bumping up to 3 hours
// beyond it.
private static final long DURATION_QUANTUM = ProcessStats.COMMIT_PERIOD;
- public static long[] sDurations = new long[] {
- 3 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 6 * 60 *60 * 1000 - DURATION_QUANTUM / 2,
- 12 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 24 * 60 * 60 * 1000 - DURATION_QUANTUM / 2
+ public static long[] sDurations = new long[] {
+ 3 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 6 * 60 * 60 * 1000 - DURATION_QUANTUM / 2,
+ 12 * 60 * 60 * 1000 - DURATION_QUANTUM / 2, 24 * 60 * 60 * 1000 - DURATION_QUANTUM / 2
};
protected static int[] sDurationLabels = new int[] {
R.string.menu_duration_3h, R.string.menu_duration_6h,
@@ -137,7 +139,11 @@
args.putDouble(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE,
memInfo.usedWeight * memInfo.weightToRam);
args.putDouble(ProcessStatsDetail.EXTRA_TOTAL_SCALE, memInfo.totalScale);
- activity.startPreferencePanel(null, ProcessStatsDetail.class.getName(), args,
- R.string.memory_usage, null, null, 0);
+ new SubSettingLauncher(activity)
+ .setDestination(ProcessStatsDetail.class.getName())
+ .setTitle(R.string.memory_usage)
+ .setArguments(args)
+ .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
+ .launch();
}
}
diff --git a/src/com/android/settings/applications/RunningProcessesView.java b/src/com/android/settings/applications/RunningProcessesView.java
index dd8bcf8..650f56c 100644
--- a/src/com/android/settings/applications/RunningProcessesView.java
+++ b/src/com/android/settings/applications/RunningProcessesView.java
@@ -18,7 +18,6 @@
import android.app.ActivityManager;
import android.app.Dialog;
-import android.app.Fragment;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
@@ -41,8 +40,9 @@
import com.android.internal.util.MemInfoReader;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.widget.LinearColorBar;
import java.util.ArrayList;
@@ -64,7 +64,7 @@
RunningState mState;
- Fragment mOwner;
+ SettingsPreferenceFragment mOwner;
Runnable mDataAvail;
@@ -411,9 +411,12 @@
args.putInt(RunningServiceDetails.KEY_USER_ID, mi.mUserId);
args.putBoolean(RunningServiceDetails.KEY_BACKGROUND, mAdapter.mShowBackground);
- SettingsActivity sa = (SettingsActivity) mOwner.getActivity();
- sa.startPreferencePanel(mOwner, RunningServiceDetails.class.getName(), args,
- R.string.runningservicedetails_settings_title, null, null, 0);
+ new SubSettingLauncher(getContext())
+ .setDestination(RunningServiceDetails.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.runningservicedetails_settings_title)
+ .setSourceMetricsCategory(mOwner.getMetricsCategory())
+ .launch();
}
}
@@ -466,7 +469,7 @@
mOwner = null;
}
- public boolean doResume(Fragment owner, Runnable dataAvail) {
+ public boolean doResume(SettingsPreferenceFragment owner, Runnable dataAvail) {
mOwner = owner;
mState.resume(this);
if (mState.hasData()) {
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index a5f06a5..9802968 100755
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -51,6 +51,7 @@
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.PreferenceCategoryController;
@@ -513,10 +514,13 @@
}
args.putString(ARG_PACKAGE_NAME, appEntry.info.packageName);
args.putInt(ARG_PACKAGE_UID, appEntry.info.uid);
-
- final SettingsActivity sa = (SettingsActivity) caller.getActivity();
- sa.startPreferencePanel(caller, fragment.getName(), args, title, null, caller,
- SUB_INFO_FRAGMENT);
+ new SubSettingLauncher(caller.getContext())
+ .setDestination(fragment.getName())
+ .setArguments(args)
+ .setTitle(title)
+ .setResultListener(caller, SUB_INFO_FRAGMENT)
+ .setSourceMetricsCategory(caller.getMetricsCategory())
+ .launch();
}
void handleUninstallButtonClick() {
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index b0949ea..f9794d2 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -78,18 +78,18 @@
import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
import com.android.settings.applications.AppStateBaseBridge;
+import com.android.settings.applications.AppStateDirectoryAccessBridge;
import com.android.settings.applications.AppStateInstallAppsBridge;
import com.android.settings.applications.AppStateNotificationBridge;
import com.android.settings.applications.AppStateOverlayBridge;
import com.android.settings.applications.AppStatePowerBridge;
-import com.android.settings.applications.AppStateDirectoryAccessBridge;
import com.android.settings.applications.AppStateUsageBridge;
import com.android.settings.applications.AppStateUsageBridge.UsageState;
import com.android.settings.applications.AppStateWriteSettingsBridge;
import com.android.settings.applications.AppStorageSettings;
import com.android.settings.applications.DefaultAppSettings;
-import com.android.settings.applications.InstalledAppCounter;
import com.android.settings.applications.DirectoryAccessDetails;
+import com.android.settings.applications.InstalledAppCounter;
import com.android.settings.applications.UsageAccessDetails;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.applications.appinfo.AppNotificationPreferenceController;
@@ -97,6 +97,7 @@
import com.android.settings.applications.appinfo.ExternalSourcesDetails;
import com.android.settings.applications.appinfo.WriteSettingsDetails;
import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.fuelgauge.HighPowerDetail;
import com.android.settings.notification.AppNotificationSettings;
@@ -628,14 +629,19 @@
return true;
case R.id.advanced:
if (mListType == LIST_TYPE_NOTIFICATION) {
- ((SettingsActivity) getActivity()).startPreferencePanel(this,
- ConfigureNotificationSettings.class.getName(), null,
- R.string.configure_notification_settings, null, this,
- ADVANCED_SETTINGS);
+ new SubSettingLauncher(getContext())
+ .setDestination(ConfigureNotificationSettings.class.getName())
+ .setTitle(R.string.configure_notification_settings)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .setResultListener(this, ADVANCED_SETTINGS)
+ .launch();
} else {
- ((SettingsActivity) getActivity()).startPreferencePanel(this,
- DefaultAppSettings.class.getName(), null, R.string.configure_apps,
- null, this, ADVANCED_SETTINGS);
+ new SubSettingLauncher(getContext())
+ .setDestination(DefaultAppSettings.class.getName())
+ .setTitle(R.string.configure_apps)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .setResultListener(this, ADVANCED_SETTINGS)
+ .launch();
}
return true;
default:
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java
index 2862083..dbe2c1b 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java
@@ -21,11 +21,12 @@
import android.os.SystemProperties;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
+import android.util.Log;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.connecteddevice.DevicePreferenceCallback;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.GearPreference;
import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.BluetoothCallback;
@@ -39,8 +40,6 @@
import java.util.Map;
import java.util.Objects;
-import android.util.Log;
-
/**
* Update the bluetooth devices. It gets bluetooth event from {@link LocalBluetoothManager} using
* {@link BluetoothCallback}. It notifies the upper level whether to add/remove the preference
@@ -73,10 +72,13 @@
final Bundle args = new Bundle();
args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS,
device.getDevice().getAddress());
- final SettingsActivity activity = (SettingsActivity) mFragment.getActivity();
- activity.startPreferencePanel(mFragment,
- BluetoothDeviceDetailsFragment.class.getName(), args,
- R.string.device_details_title, null, null, 0);
+
+ new SubSettingLauncher(mFragment.getContext())
+ .setDestination(BluetoothDeviceDetailsFragment.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.device_details_title)
+ .setSourceMetricsCategory(mFragment.getMetricsCategory())
+ .launch();
};
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 3acd477..8b64878 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -39,6 +39,7 @@
import com.android.settings.LinkifyUtils;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.location.ScanningSettings;
import com.android.settings.overlay.FeatureFactory;
@@ -248,11 +249,11 @@
LinkifyUtils.linkify(emptyView, contentBuilder, new LinkifyUtils.OnClickListener() {
@Override
public void onClick() {
- final SettingsActivity activity =
- (SettingsActivity) BluetoothSettings.this.getActivity();
- activity.startPreferencePanel(BluetoothSettings.this,
- ScanningSettings.class.getName(), null,
- R.string.location_scanning_screen_title, null, null, 0);
+ new SubSettingLauncher(getActivity())
+ .setSourceMetricsCategory(getMetricsCategory())
+ .setDestination(ScanningSettings.class.getName())
+ .setTitle(R.string.location_scanning_screen_title)
+ .launch();
}
});
}
@@ -322,11 +323,12 @@
// New version - uses a separate screen.
args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS,
device.getDevice().getAddress());
- final SettingsActivity activity =
- (SettingsActivity) BluetoothSettings.this.getActivity();
- activity.startPreferencePanel(this,
- BluetoothDeviceDetailsFragment.class.getName(), args,
- R.string.device_details_title, null, null, 0);
+ new SubSettingLauncher(context)
+ .setDestination(BluetoothDeviceDetailsFragment.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.device_details_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
}
};
diff --git a/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java b/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
index dd29902..b637e35 100644
--- a/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
+++ b/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
@@ -16,13 +16,11 @@
package com.android.settings.connecteddevice.usb;
import android.content.Context;
-import android.os.Bundle;
import android.support.annotation.VisibleForTesting;
-import android.support.v14.preference.PreferenceFragment;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
import com.android.settings.connecteddevice.DevicePreferenceCallback;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.GearPreference;
@@ -30,7 +28,7 @@
* Controller to maintain connected usb device
*/
public class ConnectedUsbDeviceUpdater {
- private PreferenceFragment mFragment;
+ private DashboardFragment mFragment;
private UsbBackend mUsbBackend;
private DevicePreferenceCallback mDevicePreferenceCallback;
@VisibleForTesting
@@ -81,11 +79,11 @@
mUsbPreference.setSelectable(false);
mUsbPreference.setOnGearClickListener((GearPreference p) -> {
// New version - uses a separate screen.
- final Bundle args = new Bundle();
- final SettingsActivity activity = (SettingsActivity) mFragment.getContext();
- activity.startPreferencePanel(mFragment,
- UsbDetailsFragment.class.getName(), args,
- R.string.device_details_title, null /* titleText */, null /* resultTo */, 0);
+ new SubSettingLauncher(mFragment.getContext())
+ .setDestination(UsbDetailsFragment.class.getName())
+ .setTitle(R.string.device_details_title)
+ .setSourceMetricsCategory(mFragment.getMetricsCategory())
+ .launch();
});
forceUpdate();
diff --git a/src/com/android/settings/core/SubSettingLauncher.java b/src/com/android/settings/core/SubSettingLauncher.java
index 8e0f859..bc79cf8 100644
--- a/src/com/android/settings/core/SubSettingLauncher.java
+++ b/src/com/android/settings/core/SubSettingLauncher.java
@@ -108,7 +108,7 @@
}
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName);
- if (mLaunchRequest.sourceMetricsCategory <= 0) {
+ if (mLaunchRequest.sourceMetricsCategory < 0) {
throw new IllegalArgumentException("Source metrics category must be set");
}
intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
index da5b6c6..ab3ce8d 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
@@ -14,7 +14,6 @@
package com.android.settings.fuelgauge;
-import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
@@ -24,6 +23,8 @@
import com.android.settings.SettingsActivity;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
@@ -37,12 +38,12 @@
private PowerWhitelistBackend mBackend;
- private Fragment mFragment;
+ private DashboardFragment mFragment;
private SettingsActivity mSettingsActivity;
private String mPackageName;
public BatteryOptimizationPreferenceController(SettingsActivity settingsActivity,
- Fragment fragment, String packageName) {
+ DashboardFragment fragment, String packageName) {
super(settingsActivity);
mFragment = fragment;
mSettingsActivity = settingsActivity;
@@ -52,7 +53,7 @@
@VisibleForTesting
BatteryOptimizationPreferenceController(SettingsActivity settingsActivity,
- Fragment fragment, String packageName, PowerWhitelistBackend backend) {
+ DashboardFragment fragment, String packageName, PowerWhitelistBackend backend) {
super(settingsActivity);
mFragment = fragment;
mSettingsActivity = settingsActivity;
@@ -82,11 +83,16 @@
return false;
}
- Bundle args = new Bundle(1);
+ final Bundle args = new Bundle();
args.putString(ManageApplications.EXTRA_CLASSNAME,
Settings.HighPowerApplicationsActivity.class.getName());
- mSettingsActivity.startPreferencePanel(mFragment, ManageApplications.class.getName(), args,
- R.string.high_power_apps, null, null, 0);
+ new SubSettingLauncher(mSettingsActivity)
+ .setDestination(ManageApplications.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.high_power_apps)
+ .setSourceMetricsCategory(mFragment.getMetricsCategory())
+ .launch();
+
return true;
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java b/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java
index e6c4923..4fe193f 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummaryLegacy.java
@@ -54,6 +54,7 @@
import com.android.settings.Utils;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.display.AmbientDisplayPreferenceController;
import com.android.settings.display.AutoBrightnessPreferenceController;
@@ -365,8 +366,12 @@
Bundle args = new Bundle();
args.putString(ManageApplications.EXTRA_CLASSNAME,
HighPowerApplicationsActivity.class.getName());
- sa.startPreferencePanel(this, ManageApplications.class.getName(), args,
- R.string.high_power_apps, null, null, 0);
+ new SubSettingLauncher(context)
+ .setDestination(ManageApplications.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.high_power_apps)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
metricsFeatureProvider.action(context,
MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION);
return true;
diff --git a/src/com/android/settings/inputmethod/UserDictionarySettings.java b/src/com/android/settings/inputmethod/UserDictionarySettings.java
index 3bbc581..e80fdf3 100644
--- a/src/com/android/settings/inputmethod/UserDictionarySettings.java
+++ b/src/com/android/settings/inputmethod/UserDictionarySettings.java
@@ -42,9 +42,9 @@
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.overlay.FeatureFactory;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
@@ -187,10 +187,14 @@
args.putString(UserDictionaryAddWordContents.EXTRA_WORD, editingWord);
args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, editingShortcut);
args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mLocale);
- SettingsActivity sa = (SettingsActivity) getActivity();
- sa.startPreferencePanel(this,
- com.android.settings.inputmethod.UserDictionaryAddWordFragment.class.getName(),
- args, R.string.user_dict_settings_add_dialog_title, null, null, 0);
+
+ new SubSettingLauncher(getContext())
+ .setDestination(UserDictionaryAddWordFragment.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.user_dict_settings_add_dialog_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
+
}
private String getWord(final int position) {
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index f6bacd8..3c16b07 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -61,9 +61,9 @@
import com.android.internal.util.UserIcons;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -484,9 +484,12 @@
if (userId == UserPreference.USERID_GUEST_DEFAULTS) {
Bundle extras = new Bundle();
extras.putBoolean(UserDetailsSettings.EXTRA_USER_GUEST, true);
- ((SettingsActivity) getActivity()).startPreferencePanel(this,
- UserDetailsSettings.class.getName(),
- extras, R.string.user_guest, null, null, 0);
+ new SubSettingLauncher(getContext())
+ .setDestination(UserDetailsSettings.class.getName())
+ .setArguments(extras)
+ .setTitle(R.string.user_guest)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
return;
}
UserInfo info = mUserManager.getUserInfo(userId);
@@ -494,23 +497,24 @@
Bundle extras = new Bundle();
extras.putInt(RestrictedProfileSettings.EXTRA_USER_ID, userId);
extras.putBoolean(RestrictedProfileSettings.EXTRA_NEW_USER, newUser);
- ((SettingsActivity) getActivity()).startPreferencePanel(this,
- RestrictedProfileSettings.class.getName(),
- extras, R.string.user_restrictions_title, null,
- null, 0);
+ new SubSettingLauncher(getContext())
+ .setDestination(RestrictedProfileSettings.class.getName())
+ .setArguments(extras)
+ .setTitle(R.string.user_restrictions_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
} else if (info.id == UserHandle.myUserId()) {
// Jump to owner info panel
OwnerInfoSettings.show(this);
} else if (mUserCaps.mIsAdmin) {
- Bundle extras = new Bundle();
+ final Bundle extras = new Bundle();
extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userId);
- ((SettingsActivity) getActivity()).startPreferencePanel(this,
- UserDetailsSettings.class.getName(),
- extras,
- -1, /* No title res id */
- info.name, /* title */
- null, /* resultTo */
- 0 /* resultRequestCode */);
+ new SubSettingLauncher(getContext())
+ .setDestination(UserDetailsSettings.class.getName())
+ .setArguments(extras)
+ .setTitle(info.name)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
}
}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 69dc130..9fbeabe 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -30,7 +30,6 @@
import android.net.NetworkInfo.State;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
-import android.net.wifi.WpsInfo;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Handler;
@@ -52,6 +51,7 @@
import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.SettingsActivity;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.location.ScanningSettings;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -861,10 +861,12 @@
pref.setOnPreferenceClickListener(preference -> {
pref.getAccessPoint().saveWifiState(pref.getExtras());
- SettingsActivity activity = (SettingsActivity) WifiSettings.this.getActivity();
- activity.startPreferencePanel(this,
- WifiNetworkDetailsFragment.class.getName(), pref.getExtras(),
- -1 /* resId */, pref.getTitle(), null, 0 /* resultRequestCode */);
+ new SubSettingLauncher(getContext())
+ .setTitle(pref.getTitle())
+ .setDestination(WifiNetworkDetailsFragment.class.getName())
+ .setArguments(pref.getExtras())
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
return true;
});
@@ -922,15 +924,12 @@
Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1;
final CharSequence description = wifiScanningMode ? getText(R.string.wifi_scan_notify_text)
: getText(R.string.wifi_scan_notify_text_scanning_off);
- final LinkifyUtils.OnClickListener clickListener = new LinkifyUtils.OnClickListener() {
- @Override
- public void onClick() {
- final SettingsActivity activity = (SettingsActivity) getActivity();
- activity.startPreferencePanel(WifiSettings.this,
- ScanningSettings.class.getName(),
- null, R.string.location_scanning_screen_title, null, null, 0);
- }
- };
+ final LinkifyUtils.OnClickListener clickListener =
+ () -> new SubSettingLauncher(getContext())
+ .setDestination(ScanningSettings.class.getName())
+ .setTitle(R.string.location_scanning_screen_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
mStatusMessagePreference.setText(title, description, clickListener);
removeConnectedAccessPointPreference();
mAccessPointsPreferenceCategory.removeAll();