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 Original line Diff line number Diff line
@@ -16,14 +16,21 @@


package com.android.settings.spa.app.appinfo
package com.android.settings.spa.app.appinfo


import android.app.settings.SettingsEnums
import android.content.Intent;
import android.content.om.OverlayManager
import android.content.om.OverlayManager
import android.content.pm.ApplicationInfo
import android.content.pm.ApplicationInfo
import android.os.UserHandle
import android.os.UserHandle
import android.os.UserManager
import android.os.UserManager
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Delete

import com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminAdd
import com.android.settings.R
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.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.hasFlag
import com.android.settingslib.spaprivileged.model.app.isActiveAdmin
import com.android.settingslib.spaprivileged.model.app.isActiveAdmin
import com.android.settingslib.spaprivileged.model.app.userHandle
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 {
    private fun isUninstallButtonEnabled(app: ApplicationInfo): Boolean = when {
        !app.hasFlag(ApplicationInfo.FLAG_INSTALLED) -> false
        !app.hasFlag(ApplicationInfo.FLAG_INSTALLED) -> false


        // Not allow to uninstall DO/PO.
        Utils.isProfileOrDeviceOwner(
        app.isActiveAdmin(context) -> false
            context.devicePolicyManager, app.packageName, packageInfoPresenter.userId) -> false


        appButtonRepository.isDisallowControl(app) -> false
        appButtonRepository.isDisallowControl(app) -> false


@@ -90,7 +97,17 @@ class AppUninstallButton(private val packageInfoPresenter: PackageInfoPresenter)
    ) { onUninstallClicked(app) }
    ) { onUninstallClicked(app) }


    private fun onUninstallClicked(app: ApplicationInfo) {
    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()
        packageInfoPresenter.startUninstallActivity()
    }
    }