diff --git a/src/com/android/settings/fuelgauge/BatteryStatsHelper.java b/src/com/android/settings/fuelgauge/BatteryStatsHelper.java
index 2a3e6e8..3b1ea93 100644
--- a/src/com/android/settings/fuelgauge/BatteryStatsHelper.java
+++ b/src/com/android/settings/fuelgauge/BatteryStatsHelper.java
@@ -175,7 +175,8 @@
         }
     }
 
-    public void startBatteryDetailPage(PreferenceActivity caller, BatterySipper sipper) {
+    public void startBatteryDetailPage(
+            PreferenceActivity caller, BatterySipper sipper, boolean showLocationButton) {
         // Initialize mStats if necessary.
         getStats();
 
@@ -193,6 +194,7 @@
             args.putInt(PowerUsageDetail.EXTRA_UID, sipper.uidObj.getUid());
         }
         args.putSerializable(PowerUsageDetail.EXTRA_DRAIN_TYPE, sipper.drainType);
+        args.putBoolean(PowerUsageDetail.EXTRA_SHOW_LOCATION_BUTTON, showLocationButton);
 
         int[] types;
         double[] values;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 7eba792..e9b8106 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -107,6 +107,7 @@
     public static final String EXTRA_ICON_PACKAGE = "iconPackage"; // String
     public static final String EXTRA_NO_COVERAGE = "noCoverage";
     public static final String EXTRA_ICON_ID = "iconId"; // Int
+    public static final String EXTRA_SHOW_LOCATION_BUTTON = "showLocationButton";  // Boolean
 
     private PackageManager mPm;
     private DevicePolicyManager mDpm;
@@ -128,13 +129,14 @@
     private double mNoCoverage; // Percentage of time that there was no coverage
 
     private boolean mUsesGps;
+    private boolean mShowLocationButton;
 
     private static final String TAG = "PowerUsageDetail";
     private String[] mPackages;
 
     ApplicationInfo mApp;
     ComponentName mInstaller;
-    
+
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -176,6 +178,7 @@
         mNoCoverage = args.getDouble(EXTRA_NO_COVERAGE, 0);
         String iconPackage = args.getString(EXTRA_ICON_PACKAGE);
         int iconId = args.getInt(EXTRA_ICON_ID, 0);
+        mShowLocationButton = args.getBoolean(EXTRA_SHOW_LOCATION_BUTTON);
         if (!TextUtils.isEmpty(iconPackage)) {
             try {
                 final PackageManager pm = getActivity().getPackageManager();
@@ -362,7 +365,9 @@
                     // If the application has a settings screen, jump to  that
                     // TODO:
                 }
-                if (mUsesGps) {
+                // If power usage detail page is launched from location page, suppress "Location"
+                // button to prevent circular loops.
+                if (mUsesGps && mShowLocationButton) {
                     addControl(R.string.location_settings_title,
                             R.string.battery_sugg_apps_gps, ACTION_LOCATION_SETTINGS);
                     removeHeader = false;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 1747e3f..480bb4e 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -144,7 +144,7 @@
         }
         PowerGaugePreference pgp = (PowerGaugePreference) preference;
         BatterySipper sipper = pgp.getInfo();
-        mStatsHelper.startBatteryDetailPage((PreferenceActivity) getActivity(), sipper);
+        mStatsHelper.startBatteryDetailPage((PreferenceActivity) getActivity(), sipper, true);
         return super.onPreferenceTreeClick(preferenceScreen, preference);
     }
 
diff --git a/src/com/android/settings/location/RecentLocationApps.java b/src/com/android/settings/location/RecentLocationApps.java
index fe206b5..fda734c 100644
--- a/src/com/android/settings/location/RecentLocationApps.java
+++ b/src/com/android/settings/location/RecentLocationApps.java
@@ -69,7 +69,7 @@
 
         @Override
         public boolean onPreferenceClick(Preference preference) {
-            mStatsHelper.startBatteryDetailPage(mActivity, mSipper);
+            mStatsHelper.startBatteryDetailPage(mActivity, mSipper, false);
             return true;
         }
     }
