diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 315cba1..e8eb8ba 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -888,6 +888,27 @@
     }
 
     /**
+     * Return {@code true} if the supplied package is the device owner or profile owner of a
+     * given user.
+     *
+     * @param devicePolicyManager used to check whether it is device owner and profile owner app
+     * @param packageName         package to check about
+     * @param userId              the if of the relevant user
+     */
+    public static boolean isProfileOrDeviceOwner(DevicePolicyManager devicePolicyManager,
+            String packageName, int userId) {
+        if ((devicePolicyManager.getDeviceOwnerUserId() == userId)
+                && devicePolicyManager.isDeviceOwnerApp(packageName)) {
+            return true;
+        }
+        final ComponentName cn = devicePolicyManager.getProfileOwnerAsUser(userId);
+        if (cn != null && cn.getPackageName().equals(packageName)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
      * Return the resource id to represent the install status for an app
      */
     @StringRes
diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
index 1b14402..19627ff 100644
--- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
@@ -25,8 +25,8 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.om.OverlayManager;
 import android.content.om.OverlayInfo;
+import android.content.om.OverlayManager;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
@@ -393,11 +393,19 @@
             enabled = false;
         }
 
-        // We don't allow uninstalling DO/PO on *any* users, because if it's a system app,
+        // We don't allow uninstalling DO/PO on *any* users if it's a system app, because
         // "uninstall" is actually "downgrade to the system version + disable", and "downgrade"
         // will clear data on all users.
-        if (Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mPackageInfo.packageName)) {
-            enabled = false;
+        if (Utils.isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) {
+            if (Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mPackageInfo.packageName)) {
+                enabled = false;
+            }
+        // We allow uninstalling if the calling user is not a DO/PO and if it's not a system app,
+        // because this will not have device-wide consequences.
+        } else {
+            if (Utils.isProfileOrDeviceOwner(mDpm, mPackageInfo.packageName, mUserId)) {
+                enabled = false;
+            }
         }
 
         // Don't allow uninstalling the device provisioning package.
