Loading src/com/android/settings/Utils.java +0 −33 Original line number Diff line number Diff line Loading @@ -388,39 +388,6 @@ public final class Utils extends com.android.settingslib.Utils { .getUsers().size() > 1; } /** * 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. Loading src/com/android/settings/applications/AppInfoBase.java +10 −12 Original line number Diff line number Diff line Loading @@ -43,8 +43,8 @@ import android.util.Log; 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; Loading Loading @@ -218,20 +218,18 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment 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 { Loading src/com/android/settings/core/SubSettingLauncher.java +33 −15 Original line number Diff line number Diff line Loading @@ -101,6 +101,25 @@ public class SubSettingLauncher { "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)) { Loading @@ -123,15 +142,7 @@ public class SubSettingLauncher { 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 Loading @@ -139,14 +150,21 @@ public class SubSettingLauncher { 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); } /** Loading src/com/android/settings/datausage/BillingCyclePreference.java +7 −3 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ 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.SubSettingLauncher; import com.android.settings.datausage.CellDataPreference.DataStateListener; public class BillingCyclePreference extends Preference implements TemplatePreference { Loading Loading @@ -80,8 +80,12 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer 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() { Loading src/com/android/settings/datausage/DataUsagePreference.java +12 −10 Original line number Diff line number Diff line Loading @@ -23,10 +23,10 @@ import android.support.v4.content.res.TypedArrayUtils; 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 { Loading Loading @@ -60,16 +60,18 @@ public class DataUsagePreference extends Preference implements TemplatePreferenc @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(); } } Loading
src/com/android/settings/Utils.java +0 −33 Original line number Diff line number Diff line Loading @@ -388,39 +388,6 @@ public final class Utils extends com.android.settingslib.Utils { .getUsers().size() > 1; } /** * 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. Loading
src/com/android/settings/applications/AppInfoBase.java +10 −12 Original line number Diff line number Diff line Loading @@ -43,8 +43,8 @@ import android.util.Log; 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; Loading Loading @@ -218,20 +218,18 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment 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 { Loading
src/com/android/settings/core/SubSettingLauncher.java +33 −15 Original line number Diff line number Diff line Loading @@ -101,6 +101,25 @@ public class SubSettingLauncher { "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)) { Loading @@ -123,15 +142,7 @@ public class SubSettingLauncher { 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 Loading @@ -139,14 +150,21 @@ public class SubSettingLauncher { 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); } /** Loading
src/com/android/settings/datausage/BillingCyclePreference.java +7 −3 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ 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.SubSettingLauncher; import com.android.settings.datausage.CellDataPreference.DataStateListener; public class BillingCyclePreference extends Preference implements TemplatePreference { Loading Loading @@ -80,8 +80,12 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer 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() { Loading
src/com/android/settings/datausage/DataUsagePreference.java +12 −10 Original line number Diff line number Diff line Loading @@ -23,10 +23,10 @@ import android.support.v4.content.res.TypedArrayUtils; 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 { Loading Loading @@ -60,16 +60,18 @@ public class DataUsagePreference extends Preference implements TemplatePreferenc @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(); } }