diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java
index 0ad882d..72f4aa3 100644
--- a/src/com/android/settings/DeviceAdminAdd.java
+++ b/src/com/android/settings/DeviceAdminAdd.java
@@ -59,6 +59,7 @@
 import android.widget.TextView;
 
 import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.users.UserDialogs;
 import com.android.settingslib.RestrictedLockUtils;
@@ -425,6 +426,9 @@
             mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing);
             EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_ACTIVATED_BY_USER,
                 mDeviceAdmin.getActivityInfo().applicationInfo.uid);
+
+            unrestrictAppIfPossible(BatteryUtils.getInstance(this));
+
             setResult(Activity.RESULT_OK);
         } catch (RuntimeException e) {
             // Something bad happened...  could be that it was
@@ -446,6 +450,15 @@
         finish();
     }
 
+    void unrestrictAppIfPossible(BatteryUtils batteryUtils) {
+        // Unrestrict admin app if it is already been restricted
+        final String packageName = mDeviceAdmin.getComponent().getPackageName();
+        final int uid = batteryUtils.getPackageUid(packageName);
+        if (batteryUtils.isForceAppStandbyEnabled(uid, packageName)) {
+            batteryUtils.setForceAppStandby(uid, packageName, AppOpsManager.MODE_ALLOWED);
+        }
+    }
+
     void continueRemoveAction(CharSequence msg) {
         if (!mWaitingForRemoveMsg) {
             return;
diff --git a/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java b/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java
index 1a4ce89..1602f15 100644
--- a/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java
+++ b/tests/robotests/src/com/android/settings/DeviceAdminAddTest.java
@@ -18,23 +18,37 @@
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import android.app.AppOpsManager;
+import android.app.admin.DeviceAdminInfo;
 import android.content.Context;
 
 import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 public class DeviceAdminAddTest {
+    private static final int UID = 12345;
+    private static final String PACKAGE_NAME = "com.android.test.device.admin";
 
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private DeviceAdminInfo mDeviceAdmin;
+    @Mock
+    private BatteryUtils mBatteryUtils;
     private FakeFeatureFactory mFeatureFactory;
     private DeviceAdminAdd mDeviceAdminAdd;
 
@@ -44,6 +58,10 @@
 
         mFeatureFactory = FakeFeatureFactory.setupForTest();
         mDeviceAdminAdd = Robolectric.buildActivity(DeviceAdminAdd.class).get();
+
+        doReturn(UID).when(mBatteryUtils).getPackageUid(PACKAGE_NAME);
+        when(mDeviceAdmin.getComponent().getPackageName()).thenReturn(PACKAGE_NAME);
+        mDeviceAdminAdd.mDeviceAdmin = mDeviceAdmin;
     }
 
     @Test
@@ -56,4 +74,23 @@
         verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
                 eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY), eq("app"));
     }
+
+    @Test
+    public void unrestrictAppIfPossible_appRestricted_unrestrictApp() {
+        doReturn(true).when(mBatteryUtils).isForceAppStandbyEnabled(UID, PACKAGE_NAME);
+
+        mDeviceAdminAdd.unrestrictAppIfPossible(mBatteryUtils);
+
+        verify(mBatteryUtils).setForceAppStandby(UID, PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
+    }
+
+    @Test
+    public void unrestrictAppIfPossible_appUnrestricted_doNothing() {
+        doReturn(false).when(mBatteryUtils).isForceAppStandbyEnabled(UID, PACKAGE_NAME);
+
+        mDeviceAdminAdd.unrestrictAppIfPossible(mBatteryUtils);
+
+        verify(mBatteryUtils, never()).setForceAppStandby(UID, PACKAGE_NAME,
+                AppOpsManager.MODE_ALLOWED);
+    }
 }
