From faeaa7650e917b891c00511cd2791fa531f73ab7 Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Tue, 2 Apr 2024 14:26:30 -0700 Subject: [PATCH] [Settings] fix Settings crash on App info for archived apps For archived apps, isClearRestrictionAllowed (introduced in ag/26048774) can throw NameNotFoundException, which causes Settings app to crash if uncaught. This CL fixes that. Test: manual by archiving an app and then try to go to it's app info page BUG: 332397754 Change-Id: I49a39dba36261f36215f0389ffe41523e8a2f4e8 --- .../spa/app/appinfo/AppInfoSettingsMoreOptions.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt index 1ed595909e0..d6399790d92 100644 --- a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt +++ b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt @@ -20,6 +20,7 @@ import android.app.AppOpsManager import android.app.ecm.EnhancedConfirmationManager import android.content.Context import android.content.pm.ApplicationInfo +import android.content.pm.PackageManager import android.os.UserManager import android.widget.Toast import androidx.compose.runtime.Composable @@ -180,7 +181,12 @@ private fun ApplicationInfo.shouldShowAccessRestrictedSettings(context: Context) return if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled() && android.security.Flags.extendEcmToAllSettings()) { val manager = context.getSystemService(EnhancedConfirmationManager::class.java)!! - manager.isClearRestrictionAllowed(packageName) + try { + manager.isClearRestrictionAllowed(packageName) + } catch (e: PackageManager.NameNotFoundException) { + // Package might have been archived + false + } } else { context.appOpsManager.noteOpNoThrow( AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid, packageName, null, null