From d50c7a887873cf4860498de37bddbfce0816ecf4 Mon Sep 17 00:00:00 2001 From: Zoltan Szatmary-Ban Date: Mon, 22 Sep 2014 17:14:08 +0100 Subject: [PATCH] Start PowerUsageDetails fragment in the correct activity Make sure the stack does not get corrupted by running a fragment as a managed profile in an activity that runs as primary profile. Bug:17523189 Change-Id: I7a066a411c7995ffe44b73c6dc27b24eec85b5b3 --- src/com/android/settings/Utils.java | 2 ++ .../android/settings/fuelgauge/PowerUsageDetail.java | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index de9fac7b36e..08cfc5856ab 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -613,6 +613,8 @@ public final class Utils { int titleResId, CharSequence title, boolean isShortcut, UserHandle userHandle) { Intent intent = onBuildStartFragmentIntent(context, fragmentName, args, titleResId, title, isShortcut); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivityAsUser(intent, userHandle); } diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java index 36a24445a12..3b8ecbed676 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java @@ -259,8 +259,14 @@ public class PowerUsageDetail extends Fragment implements Button.OnClickListener args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types); args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values); - caller.startPreferencePanelAsUser(PowerUsageDetail.class.getName(), args, - R.string.details_title, null, new UserHandle(userId)); + // This is a workaround, see b/17523189 + if (userId == UserHandle.myUserId()) { + caller.startPreferencePanel(PowerUsageDetail.class.getName(), args, + R.string.details_title, null, null, 0); + } else { + caller.startPreferencePanelAsUser(PowerUsageDetail.class.getName(), args, + R.string.details_title, null, new UserHandle(userId)); + } } public static final int ACTION_DISPLAY_SETTINGS = 1;