From 3c533755ec0933320c417c9399eb6d6a8b4da7a0 Mon Sep 17 00:00:00 2001 From: fayey Date: Tue, 7 Nov 2023 06:02:07 +0000 Subject: [PATCH] Filter out apps that are not pre-granted with voice activation permission for voice activation apps. Bug: 306447565 Bug: 303727896 Bug: 309677303 Test: presubmit Change-Id: Iecdfdb158029e139283233cbfbae7b405a916f24 --- .../spa/app/specialaccess/VoiceActivationApps.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/spa/app/specialaccess/VoiceActivationApps.kt b/src/com/android/settings/spa/app/specialaccess/VoiceActivationApps.kt index de5f3b7c0fc..12258068319 100644 --- a/src/com/android/settings/spa/app/specialaccess/VoiceActivationApps.kt +++ b/src/com/android/settings/spa/app/specialaccess/VoiceActivationApps.kt @@ -20,14 +20,18 @@ import android.Manifest import android.app.AppOpsManager import android.app.settings.SettingsEnums import android.content.Context -import android.content.res.Resources import com.android.settings.R import com.android.settings.overlay.FeatureFactory +import com.android.settingslib.spaprivileged.model.app.PackageManagers.hasGrantPermission import com.android.settingslib.spaprivileged.template.app.AppOpPermissionListModel import com.android.settingslib.spaprivileged.template.app.AppOpPermissionRecord import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider - +/** + * This class builds an App List under voice activation apps and the individual page which + * allows the user to toggle voice activation related permissions on / off for the apps displayed + * in the list. + */ object VoiceActivationAppsListProvider : TogglePermissionAppListProvider { override val permissionType = "VoiceActivationApps" override fun createModel(context: Context) = VoiceActivationAppsListModel(context) @@ -46,6 +50,9 @@ class VoiceActivationAppsListModel(context: Context) : AppOpPermissionListModel( logPermissionChange(newAllowed) } + override fun isChangeable(record: AppOpPermissionRecord): Boolean = + super.isChangeable(record) && record.app.hasGrantPermission(permission) + private fun logPermissionChange(newAllowed: Boolean) { val category = when { newAllowed -> SettingsEnums.APP_SPECIAL_PERMISSION_RECEIVE_SANDBOX_TRIGGER_AUDIO_ALLOW