Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8d639c8 authored by Pavel Grafov's avatar Pavel Grafov Committed by Android (Google) Code Review
Browse files

Merge "Fix uninstall button can't click problem" into udc-dev

parents 2c5359dd f1f4097f
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -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 @@ class AppUninstallButton(private val packageInfoPresenter: PackageInfoPresenter)
    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 @@ class AppUninstallButton(private val packageInfoPresenter: PackageInfoPresenter)
    ) { 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()
    }