diff options
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt')
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt index 99b40d8a7..25b478644 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt @@ -20,6 +20,7 @@ package com.android.permissioncontroller.permission.ui.model import android.Manifest import android.Manifest.permission.ACCESS_COARSE_LOCATION import android.Manifest.permission.ACCESS_FINE_LOCATION +import android.Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED import android.Manifest.permission_group.READ_MEDIA_VISUAL import android.annotation.SuppressLint import android.app.Activity @@ -375,9 +376,8 @@ class AppPermissionViewModel( val detailId = getIndividualPermissionDetailResId(group) detailResIdLiveData.value = detailId.first to detailId.second } - } else if (KotlinUtils.isPhotoPickerPromptEnabled() && - group.permGroupName == READ_MEDIA_VISUAL && - group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.TIRAMISU) { + } else if (group.permGroupName == READ_MEDIA_VISUAL && + shouldShowPhotoPickerPromptForApp(group)) { // Allow / Select Photos / Deny case allowedState.isShown = true deniedState.isShown = true @@ -471,6 +471,19 @@ class AppPermissionViewModel( } } + private fun shouldShowPhotoPickerPromptForApp(group: LightAppPermGroup): Boolean { + if (!isPhotoPickerPromptEnabled() || + group.packageInfo.targetSdkVersion < Build.VERSION_CODES.TIRAMISU) { + return false + } + if (group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + return true + } + val userSelectedPerm = group.permissions[READ_MEDIA_VISUAL_USER_SELECTED] ?: return false + return !userSelectedPerm.isImplicit + } + + fun registerPhotoPickerResultIfNeeded(fragment: Fragment) { if (permGroupName != READ_MEDIA_VISUAL) { return |