Merge "Fix uninstall button can't click problem" into udc-dev
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()
}