Get rid of direct usage of Utils.onBuildStartFragmentIntent
Change-Id: I87eb97d6da4cd4f99be5bcdb1e3e245eb1c7bd1c
Fixes: 73250851
Test: robotests
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 0e0e08d..ab491ae 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -389,39 +389,6 @@
}
/**
- * Build an Intent to launch a new activity showing the selected fragment.
- * The implementation constructs an Intent that re-launches the current activity with the
- * appropriate arguments to display the fragment.
- *
- *
- * @param context The Context.
- * @param fragmentName The name of the fragment to display.
- * @param args Optional arguments to supply to the fragment.
- * @param titleResPackageName Optional package name for the resource id of the title.
- * @param titleResId Optional title resource id to show for this item.
- * @param title Optional title to show for this item.
- * @param isShortcut tell if this is a Launcher Shortcut or not
- * @param sourceMetricsCategory The context (source) from which an action is performed
- * @return Returns an Intent that can be launched to display the given
- * fragment.
- */
- public static Intent onBuildStartFragmentIntent(Context context, String fragmentName,
- Bundle args, String titleResPackageName, int titleResId, CharSequence title,
- boolean isShortcut, int sourceMetricsCategory) {
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setClass(context, SubSettings.class);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentName);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME,
- titleResPackageName);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, titleResId);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT, isShortcut);
- intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY, sourceMetricsCategory);
- return intent;
- }
-
- /**
* Returns the managed profile of the current user or {@code null} if none is found or a profile
* exists but it is disabled.
*/
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index 8c26988..edbd8b9 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -43,8 +43,8 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
@@ -218,20 +218,18 @@
public static void startAppInfoFragment(Class<?> fragment, int titleRes,
String pkg, int uid, Fragment source, int request, int sourceMetricsCategory) {
- startAppInfoFragment(fragment, titleRes, pkg, uid, source.getActivity(), request,
- sourceMetricsCategory);
- }
-
- public static void startAppInfoFragment(Class<?> fragment, int titleRes,
- String pkg, int uid, Activity source, int request, int sourceMetricsCategory) {
- Bundle args = new Bundle();
+ final Bundle args = new Bundle();
args.putString(AppInfoBase.ARG_PACKAGE_NAME, pkg);
args.putInt(AppInfoBase.ARG_PACKAGE_UID, uid);
- Intent intent = Utils.onBuildStartFragmentIntent(source, fragment.getName(),
- args, null, titleRes, null, false, sourceMetricsCategory);
- source.startActivityForResultAsUser(intent, request,
- new UserHandle(UserHandle.getUserId(uid)));
+ new SubSettingLauncher(source.getContext())
+ .setDestination(fragment.getName())
+ .setSourceMetricsCategory(sourceMetricsCategory)
+ .setTitle(titleRes)
+ .setArguments(args)
+ .setUserHandle(new UserHandle(UserHandle.getUserId(uid)))
+ .setResultListener(source, request)
+ .launch();
}
public static class MyAlertDialogFragment extends InstrumentedDialogFragment {
diff --git a/src/com/android/settings/core/SubSettingLauncher.java b/src/com/android/settings/core/SubSettingLauncher.java
index bc79cf8..1ffe7f5 100644
--- a/src/com/android/settings/core/SubSettingLauncher.java
+++ b/src/com/android/settings/core/SubSettingLauncher.java
@@ -101,6 +101,25 @@
"This launcher has already been executed. Do not reuse");
}
mLaunched = true;
+
+ final Intent intent = toIntent();
+
+ boolean launchAsUser = mLaunchRequest.userHandle != null
+ && mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId();
+ boolean launchForResult = mLaunchRequest.mResultListener != null;
+ if (launchAsUser && launchForResult) {
+ launchForResultAsUser(intent, mLaunchRequest.userHandle, mLaunchRequest.mResultListener,
+ mLaunchRequest.mRequestCode);
+ } else if (launchAsUser && !launchForResult) {
+ launchAsUser(intent, mLaunchRequest.userHandle);
+ } else if (!launchAsUser && launchForResult) {
+ launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode);
+ } else {
+ launch(intent);
+ }
+ }
+
+ public Intent toIntent() {
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(mContext, SubSettings.class);
if (TextUtils.isEmpty(mLaunchRequest.destinationName)) {
@@ -123,15 +142,7 @@
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT,
mLaunchRequest.isShortCut);
intent.addFlags(mLaunchRequest.flags);
-
- if (mLaunchRequest.userHandle != null
- && mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId()) {
- launchAsUser(mContext, intent, mLaunchRequest.userHandle);
- } else if (mLaunchRequest.mResultListener != null) {
- launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode);
- } else {
- launch(intent);
- }
+ return intent;
}
@VisibleForTesting
@@ -139,14 +150,21 @@
mContext.startActivity(intent);
}
- private static void launchForResult(Fragment listener, Intent intent, int requestCode) {
- listener.getActivity().startActivityForResult(intent, requestCode);
- }
-
- private static void launchAsUser(Context context, Intent intent, UserHandle userHandle) {
+ @VisibleForTesting
+ void launchAsUser(Intent intent, UserHandle userHandle) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
- context.startActivityAsUser(intent, userHandle);
+ mContext.startActivityAsUser(intent, userHandle);
+ }
+
+ @VisibleForTesting
+ void launchForResultAsUser(Intent intent, UserHandle userHandle,
+ Fragment resultListener, int requestCode) {
+ resultListener.getActivity().startActivityForResultAsUser(intent, requestCode, userHandle);
+ }
+
+ private void launchForResult(Fragment listener, Intent intent, int requestCode) {
+ listener.getActivity().startActivityForResult(intent, requestCode);
}
/**
diff --git a/src/com/android/settings/datausage/BillingCyclePreference.java b/src/com/android/settings/datausage/BillingCyclePreference.java
index 202dc80..ce043ce 100644
--- a/src/com/android/settings/datausage/BillingCyclePreference.java
+++ b/src/com/android/settings/datausage/BillingCyclePreference.java
@@ -26,7 +26,7 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
-import com.android.settings.Utils;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.CellDataPreference.DataStateListener;
public class BillingCyclePreference extends Preference implements TemplatePreference {
@@ -80,8 +80,12 @@
public Intent getIntent() {
Bundle args = new Bundle();
args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
- return Utils.onBuildStartFragmentIntent(getContext(), BillingCycleSettings.class.getName(),
- args, null, 0, getTitle(), false, MetricsProto.MetricsEvent.VIEW_UNKNOWN);
+ return new SubSettingLauncher(getContext())
+ .setDestination(BillingCycleSettings.class.getName())
+ .setArguments(args)
+ .setTitle(getTitle())
+ .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN)
+ .toIntent();
}
private final DataStateListener mListener = new DataStateListener() {
diff --git a/src/com/android/settings/datausage/DataUsagePreference.java b/src/com/android/settings/datausage/DataUsagePreference.java
index 32c7011..ecc5be6 100644
--- a/src/com/android/settings/datausage/DataUsagePreference.java
+++ b/src/com/android/settings/datausage/DataUsagePreference.java
@@ -23,10 +23,10 @@
import android.support.v7.preference.Preference;
import android.text.format.Formatter;
import android.util.AttributeSet;
+
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.net.DataUsageController;
public class DataUsagePreference extends Preference implements TemplatePreference {
@@ -38,7 +38,7 @@
public DataUsagePreference(Context context, AttributeSet attrs) {
super(context, attrs);
final TypedArray a = context.obtainStyledAttributes(
- attrs, new int[] { com.android.internal.R.attr.title },
+ attrs, new int[] {com.android.internal.R.attr.title},
TypedArrayUtils.getAttr(
context, android.support.v7.preference.R.attr.preferenceStyle,
android.R.attr.preferenceStyle), 0);
@@ -60,16 +60,18 @@
@Override
public Intent getIntent() {
- Bundle args = new Bundle();
+ final Bundle args = new Bundle();
args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
args.putInt(DataUsageList.EXTRA_SUB_ID, mSubId);
+ final SubSettingLauncher launcher = new SubSettingLauncher(getContext())
+ .setArguments(args)
+ .setDestination(DataUsageList.class.getName())
+ .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN);
if (mTitleRes > 0) {
- return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(),
- args, getContext().getPackageName(), mTitleRes, null, false,
- MetricsProto.MetricsEvent.VIEW_UNKNOWN);
+ launcher.setTitle(mTitleRes);
+ } else {
+ launcher.setTitle(getTitle());
}
- return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(), args,
- getContext().getPackageName(), 0, getTitle(), false,
- MetricsProto.MetricsEvent.VIEW_UNKNOWN);
+ return launcher.toIntent();
}
}
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index c2a72e6..7958b37 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -484,9 +484,12 @@
args.putInt(
ManageApplications.EXTRA_STORAGE_TYPE,
ManageApplications.STORAGE_TYPE_LEGACY);
- intent = Utils.onBuildStartFragmentIntent(getActivity(),
- ManageApplications.class.getName(), args, null, R.string.apps_storage, null,
- false, getMetricsCategory());
+ intent = new SubSettingLauncher(getActivity())
+ .setDestination(ManageApplications.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.apps_storage)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .toIntent();
} break;
case R.string.storage_detail_images: {
diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java
index 17a06df..adc35a6 100644
--- a/src/com/android/settings/deviceinfo/StorageSettings.java
+++ b/src/com/android/settings/deviceinfo/StorageSettings.java
@@ -47,7 +47,6 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.SummaryLoader;
@@ -232,10 +231,12 @@
mHasLaunchedPrivateVolumeSettings = true;
final Bundle args = new Bundle();
args.putString(VolumeInfo.EXTRA_VOLUME_ID, VolumeInfo.ID_PRIVATE_INTERNAL);
- Intent intent = Utils.onBuildStartFragmentIntent(getActivity(),
- StorageDashboardFragment.class.getName(), args, null,
- R.string.storage_settings, null, false, getMetricsCategory());
- getActivity().startActivity(intent);
+ new SubSettingLauncher(getActivity())
+ .setDestination(StorageDashboardFragment.class.getName())
+ .setArguments(args)
+ .setTitle(R.string.storage_settings)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .launch();
finish();
}
}
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 3623298..6b51be3 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -35,9 +35,9 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.Settings;
-import com.android.settings.Utils;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.deviceinfo.PrivateVolumeSettings.SystemInfoFragment;
import com.android.settings.deviceinfo.StorageItemPreference;
import com.android.settings.overlay.FeatureFactory;
@@ -319,15 +319,12 @@
args.putInt(
ManageApplications.EXTRA_STORAGE_TYPE,
ManageApplications.STORAGE_TYPE_PHOTOS_VIDEOS);
- return Utils.onBuildStartFragmentIntent(
- mContext,
- ManageApplications.class.getName(),
- args,
- null,
- R.string.storage_photos_videos,
- null,
- false,
- mMetricsFeatureProvider.getMetricsCategory(mFragment));
+ return new SubSettingLauncher(mContext)
+ .setDestination(ManageApplications.class.getName())
+ .setTitle(R.string.storage_photos_videos)
+ .setArguments(args)
+ .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
+ .toIntent();
}
private Intent getAudioIntent() {
@@ -341,46 +338,57 @@
args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid());
args.putString(ManageApplications.EXTRA_VOLUME_NAME, mVolume.getDescription());
args.putInt(ManageApplications.EXTRA_STORAGE_TYPE, ManageApplications.STORAGE_TYPE_MUSIC);
- return Utils.onBuildStartFragmentIntent(mContext,
- ManageApplications.class.getName(), args, null, R.string.storage_music_audio, null,
- false, mMetricsFeatureProvider.getMetricsCategory(mFragment));
+ return new SubSettingLauncher(mContext)
+ .setDestination(ManageApplications.class.getName())
+ .setTitle(R.string.storage_music_audio)
+ .setArguments(args)
+ .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
+ .toIntent();
}
private Intent getAppsIntent() {
if (mVolume == null) {
return null;
}
-
- Bundle args = getWorkAnnotatedBundle(3);
+ final Bundle args = getWorkAnnotatedBundle(3);
args.putString(ManageApplications.EXTRA_CLASSNAME,
Settings.StorageUseActivity.class.getName());
args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid());
args.putString(ManageApplications.EXTRA_VOLUME_NAME, mVolume.getDescription());
- return Utils.onBuildStartFragmentIntent(mContext,
- ManageApplications.class.getName(), args, null, R.string.apps_storage, null,
- false, mMetricsFeatureProvider.getMetricsCategory(mFragment));
+ return new SubSettingLauncher(mContext)
+ .setDestination(ManageApplications.class.getName())
+ .setTitle(R.string.apps_storage)
+ .setArguments(args)
+ .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
+ .toIntent();
}
private Intent getGamesIntent() {
- Bundle args = getWorkAnnotatedBundle(1);
+ final Bundle args = getWorkAnnotatedBundle(1);
args.putString(ManageApplications.EXTRA_CLASSNAME,
Settings.GamesStorageActivity.class.getName());
- return Utils.onBuildStartFragmentIntent(mContext,
- ManageApplications.class.getName(), args, null, R.string.game_storage_settings,
- null, false, mMetricsFeatureProvider.getMetricsCategory(mFragment));
+ return new SubSettingLauncher(mContext)
+ .setDestination(ManageApplications.class.getName())
+ .setTitle(R.string.game_storage_settings)
+ .setArguments(args)
+ .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
+ .toIntent();
}
private Intent getMoviesIntent() {
- Bundle args = getWorkAnnotatedBundle(1);
+ final Bundle args = getWorkAnnotatedBundle(1);
args.putString(ManageApplications.EXTRA_CLASSNAME,
Settings.MoviesStorageActivity.class.getName());
- return Utils.onBuildStartFragmentIntent(mContext,
- ManageApplications.class.getName(), args, null, R.string.storage_movies_tv,
- null, false, mMetricsFeatureProvider.getMetricsCategory(mFragment));
+ return new SubSettingLauncher(mContext)
+ .setDestination(ManageApplications.class.getName())
+ .setTitle(R.string.storage_movies_tv)
+ .setArguments(args)
+ .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
+ .toIntent();
}
private Bundle getWorkAnnotatedBundle(int additionalCapacity) {
- Bundle args = new Bundle(2 + additionalCapacity);
+ final Bundle args = new Bundle(2 + additionalCapacity);
args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId);
return args;
diff --git a/src/com/android/settings/deviceinfo/storage/UserProfileController.java b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
index c9fe54e..081a0be 100644
--- a/src/com/android/settings/deviceinfo/storage/UserProfileController.java
+++ b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
@@ -17,9 +17,7 @@
package com.android.settings.deviceinfo.storage;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.UserInfo;
-import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.storage.VolumeInfo;
@@ -31,14 +29,16 @@
import com.android.internal.util.Preconditions;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settings.deviceinfo.StorageItemPreference;
import com.android.settings.deviceinfo.StorageProfileFragment;
import com.android.settings.wrapper.UserManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.drawer.SettingsDrawerActivity;
-/** Defines a {@link AbstractPreferenceController} which handles a single profile of the primary
- * user. */
+/**
+ * Defines a {@link AbstractPreferenceController} which handles a single profile of the primary
+ * user.
+ */
public class UserProfileController extends AbstractPreferenceController implements
PreferenceControllerMixin, StorageAsyncLoader.ResultHandler,
UserIconLoader.UserIconHandler {
@@ -79,13 +79,16 @@
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
if (preference != null && mStoragePreference == preference) {
- Bundle args = new Bundle(2);
+ final Bundle args = new Bundle();
args.putInt(StorageProfileFragment.USER_ID_EXTRA, mUser.id);
args.putString(VolumeInfo.EXTRA_VOLUME_ID, VolumeInfo.ID_PRIVATE_INTERNAL);
- Intent intent = Utils.onBuildStartFragmentIntent(mContext,
- StorageProfileFragment.class.getName(), args, null, 0,
- mUser.name, false, MetricsProto.MetricsEvent.DEVICEINFO_STORAGE);
- mContext.startActivity(intent);
+
+ new SubSettingLauncher(mContext)
+ .setDestination(StorageProfileFragment.class.getName())
+ .setArguments(args)
+ .setTitle(mUser.name)
+ .setSourceMetricsCategory(MetricsProto.MetricsEvent.DEVICEINFO_STORAGE)
+ .launch();
return true;
}
@@ -99,8 +102,7 @@
int userId = mUser.id;
StorageAsyncLoader.AppsStorageResult result = stats.get(userId);
if (result != null) {
- setSize(
- result.externalStats.totalBytes
+ setSize(result.externalStats.totalBytes
+ result.otherAppsSize
+ result.videoAppsSize
+ result.musicAppsSize
diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java
index 09789f3..a4310a1 100644
--- a/src/com/android/settings/notification/NotificationSettingsBase.java
+++ b/src/com/android/settings/notification/NotificationSettingsBase.java
@@ -16,65 +16,42 @@
package com.android.settings.notification;
-import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_NONE;
-import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
-
-import com.android.internal.widget.LockPatternUtils;
-import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
-import com.android.settings.applications.AppInfoBase;
-import com.android.settings.applications.LayoutPreference;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
-import com.android.settings.widget.MasterCheckBoxPreference;
-import com.android.settings.widget.MasterSwitchPreference;
-import com.android.settings.widget.SwitchBar;
-import com.android.settings.wrapper.NotificationChannelGroupWrapper;
-import com.android.settingslib.RestrictedLockUtils;
-import com.android.settingslib.RestrictedSwitchPreference;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.FooterPreference;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
import android.app.NotificationManager;
-import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
-import android.content.pm.UserInfo;
-import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.SearchIndexableResource;
import android.provider.Settings;
-import android.service.notification.NotificationListenerService;
-import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
-import android.util.ArrayMap;
import android.util.Log;
import android.widget.Toast;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+import com.android.settings.R;
+import com.android.settings.applications.AppInfoBase;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.widget.MasterCheckBoxPreference;
+import com.android.settings.wrapper.NotificationChannelGroupWrapper;
+import com.android.settingslib.RestrictedLockUtils;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -268,11 +245,12 @@
channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid);
channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
channelArgs.putString(Settings.EXTRA_CHANNEL_ID, channel.getId());
- Intent channelIntent = Utils.onBuildStartFragmentIntent(getActivity(),
- ChannelNotificationSettings.class.getName(),
- channelArgs, null, R.string.notification_channel_title, null, false,
- getMetricsCategory());
- channelPref.setIntent(channelIntent);
+ channelPref.setIntent(new SubSettingLauncher(getActivity())
+ .setDestination(ChannelNotificationSettings.class.getName())
+ .setArguments(channelArgs)
+ .setTitle(R.string.notification_channel_title)
+ .setSourceMetricsCategory(getMetricsCategory())
+ .toIntent());
channelPref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
diff --git a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
index ce5e1d1..6cc99f7 100644
--- a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
@@ -33,16 +33,13 @@
import android.util.ArraySet;
import android.util.IconDrawableFactory;
import android.util.Log;
-import android.widget.Switch;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.applications.InstalledAppCounter;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.widget.AppPreference;
-import com.android.settings.widget.MasterSwitchPreference;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -237,10 +234,13 @@
args.putString(AppInfoBase.ARG_PACKAGE_NAME, pkgName);
args.putInt(AppInfoBase.ARG_PACKAGE_UID, appEntry.info.uid);
- pref.setIntent(Utils.onBuildStartFragmentIntent(mHost.getActivity(),
- AppNotificationSettings.class.getName(), args, null,
- R.string.notifications_title, null, false,
- MetricsProto.MetricsEvent.MANAGE_APPLICATIONS_NOTIFICATIONS));
+ pref.setIntent(new SubSettingLauncher(mHost.getActivity())
+ .setDestination(AppNotificationSettings.class.getName())
+ .setTitle(R.string.notifications_title)
+ .setArguments(args)
+ .setSourceMetricsCategory(
+ MetricsProto.MetricsEvent.MANAGE_APPLICATIONS_NOTIFICATIONS)
+ .toIntent());
pref.setOnPreferenceChangeListener((preference, newValue) -> {
boolean blocked = !(Boolean) newValue;
mNotificationBackend.setNotificationsEnabledForPackage(
diff --git a/src/com/android/settings/search/DatabaseIndexingUtils.java b/src/com/android/settings/search/DatabaseIndexingUtils.java
index 94ec650..c7c2320 100644
--- a/src/com/android/settings/search/DatabaseIndexingUtils.java
+++ b/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -26,9 +26,9 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
-import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.core.AbstractPreferenceController;
import java.lang.reflect.Field;
@@ -59,8 +59,12 @@
String screenTitle, int sourceMetricsCategory) {
final Bundle args = new Bundle();
args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key);
- final Intent searchDestination = Utils.onBuildStartFragmentIntent(context,
- className, args, null, 0, screenTitle, false, sourceMetricsCategory);
+ final Intent searchDestination = new SubSettingLauncher(context)
+ .setDestination(className)
+ .setArguments(args)
+ .setTitle(screenTitle)
+ .setSourceMetricsCategory(sourceMetricsCategory)
+ .toIntent();
searchDestination.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key)
.setAction("com.android.settings.SEARCH_RESULT_TRAMPOLINE")
.setComponent(null);