diff --git a/res/xml/power_usage_detail.xml b/res/xml/power_usage_detail.xml
index 95c1038..4746625 100644
--- a/res/xml/power_usage_detail.xml
+++ b/res/xml/power_usage_detail.xml
@@ -34,6 +34,30 @@
         android:title="@string/battery_detail_manage_title"
         settings:allowDividerAbove="true">
 
+        <com.android.settingslib.widget.RadioButtonPreference
+            android:key="unrestricted_pref"
+            android:summary="@string/manager_battery_usage_unrestricted_summary"
+            android:title="@string/manager_battery_usage_unrestricted_title"
+            settings:controller="com.android.settings.fuelgauge.UnrestrictedPreferenceController"/>
+
+        <com.android.settingslib.widget.RadioButtonPreference
+            android:key="optimized_pref"
+            android:summary="@string/manager_battery_usage_optimized_summary"
+            android:title="@string/manager_battery_usage_optimized_title"
+            settings:controller="com.android.settings.fuelgauge.OptimizedPreferenceController"/>
+
+        <com.android.settingslib.widget.RadioButtonPreference
+            android:key="restricted_pref"
+            android:summary="@string/manager_battery_usage_restricted_summary"
+            android:title="@string/restricted_true_label"
+            settings:controller="com.android.settings.fuelgauge.RestrictedPreferenceController"/>
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/battery_detail_manage_title"
+        settings:allowDividerAbove="true">
+
         <com.android.settingslib.RestrictedPreference
             android:key="background_activity"
             android:title="@string/background_activity_title"
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index f4bdfb3..79b5479 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -48,6 +48,7 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.utils.StringUtil;
 import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -60,7 +61,7 @@
  */
 public class AdvancedPowerUsageDetail extends DashboardFragment implements
         ButtonActionDialogFragment.AppButtonsDialogListener,
-        BatteryTipPreferenceController.BatteryTipListener {
+        BatteryTipPreferenceController.BatteryTipListener, RadioButtonPreference.OnClickListener {
 
     public static final String TAG = "AdvancedPowerDetail";
     public static final String EXTRA_UID = "extra_uid";
@@ -75,6 +76,9 @@
     private static final String KEY_PREF_FOREGROUND = "app_usage_foreground";
     private static final String KEY_PREF_BACKGROUND = "app_usage_background";
     private static final String KEY_PREF_HEADER = "header_view";
+    private static final String KEY_PREF_UNRESTRICTED = "unrestricted_pref";
+    private static final String KEY_PREF_OPTIMIZED = "optimized_pref";
+    private static final String KEY_PREF_RESTRICTED = "restricted_pref";
 
     private static final int REQUEST_UNINSTALL = 0;
     private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
@@ -92,8 +96,17 @@
     Preference mForegroundPreference;
     @VisibleForTesting
     Preference mBackgroundPreference;
+    @VisibleForTesting
+    RadioButtonPreference mRestrictedPreference;
+    @VisibleForTesting
+    RadioButtonPreference mOptimizePreference;
+    @VisibleForTesting
+    RadioButtonPreference mUnrestrictedPreference;
     private AppButtonsPreferenceController mAppButtonsPreferenceController;
     private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;
+    private UnrestrictedPreferenceController mUnrestrictedPreferenceController;
+    private OptimizedPreferenceController mOptimizedPreferenceController;
+    private RestrictedPreferenceController mRestrictedPreferenceController;
 
     private String mPackageName;
 
@@ -176,6 +189,13 @@
         mBackgroundPreference = findPreference(KEY_PREF_BACKGROUND);
         mHeaderPreference = (LayoutPreference) findPreference(KEY_PREF_HEADER);
 
+        mUnrestrictedPreference  = findPreference(KEY_PREF_UNRESTRICTED);
+        mOptimizePreference  = findPreference(KEY_PREF_OPTIMIZED);
+        mRestrictedPreference  = findPreference(KEY_PREF_RESTRICTED);
+        mUnrestrictedPreference.setOnClickListener(this);
+        mOptimizePreference.setOnClickListener(this);
+        mRestrictedPreference.setOnClickListener(this);
+
         if (mPackageName != null) {
             mAppEntry = mState.getEntry(mPackageName, UserHandle.myUserId());
         }
@@ -274,6 +294,15 @@
                 (SettingsActivity) getActivity(), this, getSettingsLifecycle(), packageName, mState,
                 REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
         controllers.add(mAppButtonsPreferenceController);
+        mUnrestrictedPreferenceController =
+                new UnrestrictedPreferenceController(context, uid, packageName);
+        mOptimizedPreferenceController =
+                new OptimizedPreferenceController(context, uid, packageName);
+        mRestrictedPreferenceController =
+                new RestrictedPreferenceController(context, uid, packageName);
+        controllers.add(mUnrestrictedPreferenceController);
+        controllers.add(mOptimizedPreferenceController);
+        controllers.add(mRestrictedPreferenceController);
 
         return controllers;
     }
@@ -298,4 +327,15 @@
         mBackgroundActivityPreferenceController.updateSummary(
                 findPreference(mBackgroundActivityPreferenceController.getPreferenceKey()));
     }
+
+    @Override
+    public void onRadioButtonClicked(RadioButtonPreference selected) {
+        updatePreferenceState(mUnrestrictedPreference, selected.getKey());
+        updatePreferenceState(mOptimizePreference, selected.getKey());
+        updatePreferenceState(mRestrictedPreference, selected.getKey());
+    }
+
+    private void updatePreferenceState(RadioButtonPreference preference, String selectedKey) {
+        preference.setChecked(selectedKey.equals(preference.getKey()));
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 7f76c70..8eb7212 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -58,6 +58,7 @@
 import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.RadioButtonPreference;
 
 import org.junit.After;
 import org.junit.Before;
@@ -96,6 +97,9 @@
     private static final long PROCSTATE_TOP_TIME_US = PROCSTATE_TOP_TIME_MS * 1000;
     private static final long PHONE_FOREGROUND_TIME_MS = 250 * 1000;
     private static final long PHONE_BACKGROUND_TIME_MS = 0;
+    private static final String KEY_PREF_UNRESTRICTED = "unrestricted_pref";
+    private static final String KEY_PREF_OPTIMIZED = "optimized_pref";
+    private static final String KEY_PREF_RESTRICTED = "restricted_pref";
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private FragmentActivity mActivity;
@@ -124,6 +128,9 @@
     private Context mContext;
     private Preference mForegroundPreference;
     private Preference mBackgroundPreference;
+    private RadioButtonPreference mRestrictedPreference;
+    private RadioButtonPreference mOptimizePreference;
+    private RadioButtonPreference mUnrestrictedPreference;
     private AdvancedPowerUsageDetail mFragment;
     private SettingsActivity mTestActivity;
 
@@ -194,8 +201,14 @@
 
         mForegroundPreference = new Preference(mContext);
         mBackgroundPreference = new Preference(mContext);
+        mRestrictedPreference = new RadioButtonPreference(mContext);
+        mOptimizePreference = new RadioButtonPreference(mContext);
+        mUnrestrictedPreference = new RadioButtonPreference(mContext);
         mFragment.mForegroundPreference = mForegroundPreference;
         mFragment.mBackgroundPreference = mBackgroundPreference;
+        mFragment.mRestrictedPreference = mRestrictedPreference;
+        mFragment.mOptimizePreference = mOptimizePreference;
+        mFragment.mUnrestrictedPreference = mUnrestrictedPreference;
     }
 
     @After
@@ -352,4 +365,16 @@
         assertThat(mForegroundPreference.getSummary().toString()).isEqualTo("Used for 0 min");
         assertThat(mBackgroundPreference.getSummary().toString()).isEqualTo("Active for 0 min");
     }
+
+    @Test
+    public void testOnRadioButtonClicked_clickOptimizePref_optimizePreferenceChecked() {
+        mOptimizePreference.setKey(KEY_PREF_OPTIMIZED);
+        mRestrictedPreference.setKey(KEY_PREF_RESTRICTED);
+        mUnrestrictedPreference.setKey(KEY_PREF_UNRESTRICTED);
+        mFragment.onRadioButtonClicked(mOptimizePreference);
+
+        assertThat(mOptimizePreference.isChecked()).isTrue();
+        assertThat(mRestrictedPreference.isChecked()).isFalse();
+        assertThat(mUnrestrictedPreference.isChecked()).isFalse();
+    }
 }
