diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java index ff191ab4476..0f07afa4c23 100644 --- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java @@ -352,7 +352,6 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp mPackageInfo = mPm.getPackageInfo(mAppEntry.info.packageName, PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_ANY_USER | - PackageManager.GET_SIGNATURES | PackageManager.GET_PERMISSIONS); mPackageName = mAppEntry.info.packageName; @@ -394,7 +393,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp // 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 (isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) { + if (isSystemPackage(mActivity.getResources(), mPm, mPackageInfo.applicationInfo)) { if (Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mPackageInfo.packageName)) { enabled = false; } @@ -563,7 +562,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp // by not allowing disabling of apps signed with the // system cert and any launcher app in the system. if (mHomePackages.contains(mAppEntry.info.packageName) - || isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) { + || isSystemPackage(mActivity.getResources(), mPm, mPackageInfo.applicationInfo)) { // Disable button for core system applications. mButtonsPref.setButton2Text(R.string.disable_text) .setButton2Icon(R.drawable.ic_settings_disable); @@ -582,8 +581,8 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp } @VisibleForTesting - boolean isSystemPackage(Resources resources, PackageManager pm, PackageInfo packageInfo) { - return Utils.isSystemPackage(resources, pm, packageInfo); + boolean isSystemPackage(Resources resources, PackageManager pm, ApplicationInfo app) { + return Utils.isSystemPackage(resources, pm, app); } private boolean isDisabledUntilUsed() { diff --git a/src/com/android/settings/spa/app/appinfo/AppButtons.kt b/src/com/android/settings/spa/app/appinfo/AppButtons.kt index c088fec69c5..06016fcb9c2 100644 --- a/src/com/android/settings/spa/app/appinfo/AppButtons.kt +++ b/src/com/android/settings/spa/app/appinfo/AppButtons.kt @@ -16,7 +16,7 @@ package com.android.settings.spa.app.appinfo -import android.content.pm.PackageInfo +import android.content.pm.ApplicationInfo import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.remember @@ -58,17 +58,17 @@ private class AppButtonsPresenter(private val packageInfoPresenter: PackageInfoP @Composable fun rememberActionsButtons() = remember { packageInfoPresenter.flow.map { packageInfo -> - if (packageInfo != null) getActionButtons(packageInfo) else emptyList() + if (packageInfo != null) getActionButtons(packageInfo.applicationInfo) else emptyList() } }.collectAsState(initial = emptyList()) - private fun getActionButtons(packageInfo: PackageInfo): List = listOfNotNull( - appLaunchButton.getActionButton(packageInfo), - appInstallButton.getActionButton(packageInfo), - appDisableButton.getActionButton(packageInfo), - appUninstallButton.getActionButton(packageInfo), - appClearButton.getActionButton(packageInfo), - appForceStopButton.getActionButton(packageInfo), + private fun getActionButtons(app: ApplicationInfo): List = listOfNotNull( + appLaunchButton.getActionButton(app), + appInstallButton.getActionButton(app), + appDisableButton.getActionButton(app), + appUninstallButton.getActionButton(app), + appClearButton.getActionButton(app), + appForceStopButton.getActionButton(app), ) @Composable diff --git a/src/com/android/settings/spa/app/appinfo/AppClearButton.kt b/src/com/android/settings/spa/app/appinfo/AppClearButton.kt index c441071910d..ce00b73eed2 100644 --- a/src/com/android/settings/spa/app/appinfo/AppClearButton.kt +++ b/src/com/android/settings/spa/app/appinfo/AppClearButton.kt @@ -16,7 +16,7 @@ package com.android.settings.spa.app.appinfo -import android.content.pm.PackageInfo +import android.content.pm.ApplicationInfo import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.AlertDialog @@ -37,8 +37,7 @@ class AppClearButton( private var openConfirmDialog by mutableStateOf(false) - fun getActionButton(packageInfo: PackageInfo): ActionButton? { - val app = packageInfo.applicationInfo + fun getActionButton(app: ApplicationInfo): ActionButton? { if (!app.isInstantApp) return null return clearButton() diff --git a/src/com/android/settings/spa/app/appinfo/AppDisableButton.kt b/src/com/android/settings/spa/app/appinfo/AppDisableButton.kt index 79fb3866692..8aab3c1f312 100644 --- a/src/com/android/settings/spa/app/appinfo/AppDisableButton.kt +++ b/src/com/android/settings/spa/app/appinfo/AppDisableButton.kt @@ -52,13 +52,12 @@ class AppDisableButton( private var openConfirmDialog by mutableStateOf(false) - fun getActionButton(packageInfo: PackageInfo): ActionButton? { - val app = packageInfo.applicationInfo + fun getActionButton(app: ApplicationInfo): ActionButton? { if (!app.isSystemApp) return null return when { app.enabled && !app.isDisabledUntilUsed -> { - disableButton(app = app, enabled = isDisableButtonEnabled(packageInfo)) + disableButton(app = app, enabled = isDisableButtonEnabled(app)) } else -> enableButton() @@ -68,9 +67,8 @@ class AppDisableButton( /** * Gets whether a package can be disabled. */ - private fun isDisableButtonEnabled(packageInfo: PackageInfo): Boolean { - val packageName = packageInfo.packageName - val app = packageInfo.applicationInfo + private fun isDisableButtonEnabled(app: ApplicationInfo): Boolean { + val packageName = app.packageName return when { packageName in applicationFeatureProvider.keepEnabledPackages -> false @@ -80,7 +78,7 @@ class AppDisableButton( // Try to prevent the user from bricking their phone by not allowing disabling of apps // signed with the system certificate. - SettingsLibUtils.isSystemPackage(resources, packageManager, packageInfo) -> false + SettingsLibUtils.isSystemPackage(resources, packageManager, app) -> false // We don't allow disabling DO/PO on *any* users if it's a system app, because // "disabling" is actually "downgrade to the system version + disable", and "downgrade" diff --git a/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt b/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt index 52ce3dfb5f6..a7aa6c113af 100644 --- a/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt +++ b/src/com/android/settings/spa/app/appinfo/AppForceStopButton.kt @@ -48,8 +48,7 @@ class AppForceStopButton( private var openConfirmDialog by mutableStateOf(false) - fun getActionButton(packageInfo: PackageInfo): ActionButton { - val app = packageInfo.applicationInfo + fun getActionButton(app: ApplicationInfo): ActionButton { return ActionButton( text = context.getString(R.string.force_stop), imageVector = Icons.Outlined.WarningAmber, diff --git a/src/com/android/settings/spa/app/appinfo/AppInstallButton.kt b/src/com/android/settings/spa/app/appinfo/AppInstallButton.kt index 4ff246115c5..caf6a4d4350 100644 --- a/src/com/android/settings/spa/app/appinfo/AppInstallButton.kt +++ b/src/com/android/settings/spa/app/appinfo/AppInstallButton.kt @@ -18,7 +18,6 @@ package com.android.settings.spa.app.appinfo import android.content.Intent import android.content.pm.ApplicationInfo -import android.content.pm.PackageInfo import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.FileDownload import com.android.settings.R @@ -29,8 +28,7 @@ import com.android.settingslib.spaprivileged.model.app.userHandle class AppInstallButton(private val packageInfoPresenter: PackageInfoPresenter) { private val context = packageInfoPresenter.context - fun getActionButton(packageInfo: PackageInfo): ActionButton? { - val app = packageInfo.applicationInfo + fun getActionButton(app: ApplicationInfo): ActionButton? { if (!app.isInstantApp) return null return AppStoreUtil.getAppStoreLink(packageInfoPresenter.userContext, app.packageName) diff --git a/src/com/android/settings/spa/app/appinfo/AppLaunchButton.kt b/src/com/android/settings/spa/app/appinfo/AppLaunchButton.kt index 9e82f53e146..a1c3273eae3 100644 --- a/src/com/android/settings/spa/app/appinfo/AppLaunchButton.kt +++ b/src/com/android/settings/spa/app/appinfo/AppLaunchButton.kt @@ -18,7 +18,6 @@ package com.android.settings.spa.app.appinfo import android.content.Intent import android.content.pm.ApplicationInfo -import android.content.pm.PackageInfo import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Launch import com.android.settings.R @@ -29,9 +28,9 @@ class AppLaunchButton(packageInfoPresenter: PackageInfoPresenter) { private val context = packageInfoPresenter.context private val userPackageManager = packageInfoPresenter.userPackageManager - fun getActionButton(packageInfo: PackageInfo): ActionButton? = - userPackageManager.getLaunchIntentForPackage(packageInfo.packageName)?.let { intent -> - launchButton(intent, packageInfo.applicationInfo) + fun getActionButton(app: ApplicationInfo): ActionButton? = + userPackageManager.getLaunchIntentForPackage(app.packageName)?.let { intent -> + launchButton(intent, app) } private fun launchButton(intent: Intent, app: ApplicationInfo) = ActionButton( diff --git a/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt b/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt index 4b95f7bebde..f05d611984f 100644 --- a/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt +++ b/src/com/android/settings/spa/app/appinfo/AppUninstallButton.kt @@ -18,7 +18,6 @@ package com.android.settings.spa.app.appinfo import android.content.om.OverlayManager import android.content.pm.ApplicationInfo -import android.content.pm.PackageInfo import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Delete import com.android.settings.R @@ -32,8 +31,7 @@ class AppUninstallButton(private val packageInfoPresenter: PackageInfoPresenter) private val appButtonRepository = AppButtonRepository(context) private val overlayManager = context.getSystemService(OverlayManager::class.java)!! - fun getActionButton(packageInfo: PackageInfo): ActionButton? { - val app = packageInfo.applicationInfo + fun getActionButton(app: ApplicationInfo): ActionButton? { if (app.isSystemApp || app.isInstantApp) return null return uninstallButton(app = app, enabled = isUninstallButtonEnabled(app)) } diff --git a/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt b/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt index 4a6f9dbc4a7..b8949f0061a 100644 --- a/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt +++ b/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt @@ -147,9 +147,7 @@ class PackageInfoPresenter( private fun getPackageInfo() = PackageManagers.getPackageInfoAsUser( packageName = packageName, - flags = PackageManager.MATCH_DISABLED_COMPONENTS or - PackageManager.GET_SIGNATURES or - PackageManager.GET_PERMISSIONS, + flags = PackageManager.MATCH_DISABLED_COMPONENTS or PackageManager.GET_PERMISSIONS, userId = userId, ) }