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
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index de9fac7..08cfc58 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -613,6 +613,8 @@
             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 36a2444..3b8ecbe 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -259,8 +259,14 @@
         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;