Show Power usage details for the correct user

Settings > Battery > Details has to observe managed profiles and start the
Power Usage Detail fragment for the correct profile.

Bug: 17523189

Change-Id: I7a47b972a8a0492b4a411197cd2c8c65f24c2e7e
This commit is contained in:
Zoltan Szatmary-Ban
2014-09-18 10:26:11 +01:00
parent 894af268de
commit 7a2ccf201e
3 changed files with 39 additions and 2 deletions

View File

@@ -857,6 +857,33 @@ public class SettingsActivity extends Activity
titleRes, title, mIsShortcut); titleRes, title, mIsShortcut);
} }
/**
* Start a new fragment in a new activity containing a preference panel for a given user. If the
* preferences are being displayed in multi-pane mode, the given fragment class will be
* instantiated and placed in the appropriate pane. If running in single-pane mode, a new
* activity will be launched in which to show the fragment.
*
* @param fragmentClass Full name of the class implementing the fragment.
* @param args Any desired arguments to supply to the fragment.
* @param titleRes Optional resource identifier of the title of this fragment.
* @param titleText Optional text of the title of this fragment.
* @param userHandle The user for which the panel has to be started.
*/
public void startPreferencePanelAsUser(String fragmentClass, Bundle args, int titleRes,
CharSequence titleText, UserHandle userHandle) {
String title = null;
if (titleRes < 0) {
if (titleText != null) {
title = titleText.toString();
} else {
// There not much we can do in that case
title = "";
}
}
Utils.startWithFragmentAsUser(this, fragmentClass, args,
titleRes, title, mIsShortcut, userHandle);
}
/** /**
* Called by a preference panel fragment to finish itself. * Called by a preference panel fragment to finish itself.
* *

View File

@@ -609,6 +609,13 @@ public final class Utils {
} }
} }
public static void startWithFragmentAsUser(Context context, String fragmentName, Bundle args,
int titleResId, CharSequence title, boolean isShortcut, UserHandle userHandle) {
Intent intent = onBuildStartFragmentIntent(context, fragmentName, args, titleResId,
title, isShortcut);
context.startActivityAsUser(intent, userHandle);
}
/** /**
* Build an Intent to launch a new activity showing the selected fragment. * 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 * The implementation constructs an Intent that re-launches the current activity with the

View File

@@ -104,6 +104,7 @@ public class PowerUsageDetail extends Fragment implements Button.OnClickListener
args.putSerializable(PowerUsageDetail.EXTRA_DRAIN_TYPE, entry.sipper.drainType); args.putSerializable(PowerUsageDetail.EXTRA_DRAIN_TYPE, entry.sipper.drainType);
args.putBoolean(PowerUsageDetail.EXTRA_SHOW_LOCATION_BUTTON, showLocationButton); args.putBoolean(PowerUsageDetail.EXTRA_SHOW_LOCATION_BUTTON, showLocationButton);
int userId = UserHandle.myUserId();
int[] types; int[] types;
double[] values; double[] values;
switch (entry.sipper.drainType) { switch (entry.sipper.drainType) {
@@ -155,6 +156,7 @@ public class PowerUsageDetail extends Fragment implements Button.OnClickListener
printWriter.flush(); printWriter.flush();
args.putString(PowerUsageDetail.EXTRA_REPORT_CHECKIN_DETAILS, args.putString(PowerUsageDetail.EXTRA_REPORT_CHECKIN_DETAILS,
result.toString()); result.toString());
userId = UserHandle.getUserId(uid.getUid());
} }
} }
break; break;
@@ -256,8 +258,9 @@ public class PowerUsageDetail extends Fragment implements Button.OnClickListener
} }
args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types); args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types);
args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values); args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values);
caller.startPreferencePanel(PowerUsageDetail.class.getName(), args,
R.string.details_title, null, null, 0); caller.startPreferencePanelAsUser(PowerUsageDetail.class.getName(), args,
R.string.details_title, null, new UserHandle(userId));
} }
public static final int ACTION_DISPLAY_SETTINGS = 1; public static final int ACTION_DISPLAY_SETTINGS = 1;