From 3d74bb4ab27ae9601f5c9c3706fad287845fb672 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Fri, 19 Jun 2009 10:35:21 -0700 Subject: [PATCH] Add "why?" button to low battery dialog. This takes the user to the power usage activity. --- api/current.xml | 11 +++++++++++ core/java/android/content/Intent.java | 9 +++++++++ core/res/res/values/strings.xml | 3 +++ .../android/server/status/StatusBarPolicy.java | 17 +++++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/api/current.xml b/api/current.xml index a5476fb6c47db..962e8e6336da4 100644 --- a/api/current.xml +++ b/api/current.xml @@ -31851,6 +31851,17 @@ visibility="public" > + + Input: Nothing. + *

Output: Nothing. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY"; + // --------------------------------------------------------------------- // --------------------------------------------------------------------- // Standard intent broadcast actions (see action variable). diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 05a20aa6cf8dc..bdfccd6b6f3ee 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1302,6 +1302,9 @@ less than %d%% remaining. + + Why? Factory test failed diff --git a/services/java/com/android/server/status/StatusBarPolicy.java b/services/java/com/android/server/status/StatusBarPolicy.java index 42c885d44d914..dd3d38c80f659 100644 --- a/services/java/com/android/server/status/StatusBarPolicy.java +++ b/services/java/com/android/server/status/StatusBarPolicy.java @@ -728,6 +728,23 @@ public class StatusBarPolicy { b.setView(v); b.setIcon(android.R.drawable.ic_dialog_alert); b.setPositiveButton(android.R.string.ok, null); + + final Intent intent = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_MULTIPLE_TASK + | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS + | Intent.FLAG_ACTIVITY_NO_HISTORY); + if (intent.resolveActivity(mContext.getPackageManager()) != null) { + b.setNegativeButton(com.android.internal.R.string.battery_low_why, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + mContext.startActivity(intent); + if (mLowBatteryDialog != null) { + mLowBatteryDialog.dismiss(); + } + } + }); + } AlertDialog d = b.create(); d.setOnDismissListener(mLowBatteryListener);