diff --git a/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt b/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt
index 01c60f8..c1a308f 100644
--- a/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt
@@ -16,14 +16,21 @@
 
 package com.android.settings.spa.app.appinfo
 
+import android.app.settings.SettingsEnums
+import android.content.Intent;
 import android.content.om.OverlayManager
 import android.content.pm.ApplicationInfo
 import android.os.UserHandle
 import android.os.UserManager
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.outlined.Delete
+
+import com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminAdd
 import com.android.settings.R
+import com.android.settings.spa.SpaActivity
+import com.android.settings.Utils
 import com.android.settingslib.spa.widget.button.ActionButton
+import com.android.settingslib.spaprivileged.framework.common.devicePolicyManager
 import com.android.settingslib.spaprivileged.model.app.hasFlag
 import com.android.settingslib.spaprivileged.model.app.isActiveAdmin
 import com.android.settingslib.spaprivileged.model.app.userHandle
@@ -43,8 +50,8 @@
     private fun isUninstallButtonEnabled(app: ApplicationInfo): Boolean = when {
         !app.hasFlag(ApplicationInfo.FLAG_INSTALLED) -> false
 
-        // Not allow to uninstall DO/PO.
-        app.isActiveAdmin(context) -> false
+        Utils.isProfileOrDeviceOwner(
+            context.devicePolicyManager, app.packageName, packageInfoPresenter.userId) -> false
 
         appButtonRepository.isDisallowControl(app) -> false
 
@@ -90,7 +97,17 @@
     ) { onUninstallClicked(app) }
 
     private fun onUninstallClicked(app: ApplicationInfo) {
-        if (appButtonRepository.isUninstallBlockedByAdmin(app)) return
+        if (appButtonRepository.isUninstallBlockedByAdmin(app)) {
+            return
+        } else if (app.isActiveAdmin(context)) {
+                var uninstallDaIntent = Intent(context, DeviceAdminAdd::class.java)
+                uninstallDaIntent.putExtra(DeviceAdminAdd.EXTRA_DEVICE_ADMIN_PACKAGE_NAME,
+                        app.packageName)
+                packageInfoPresenter.logAction(
+                    SettingsEnums.ACTION_SETTINGS_UNINSTALL_DEVICE_ADMIN)
+                context.startActivityAsUser(uninstallDaIntent, app.userHandle)
+                return
+        }
         packageInfoPresenter.startUninstallActivity()
     }
 
