diff options
3 files changed, 30 insertions, 0 deletions
diff --git a/PermissionController/AndroidManifest.xml b/PermissionController/AndroidManifest.xml index f1e84500e..c0d6c2907 100644 --- a/PermissionController/AndroidManifest.xml +++ b/PermissionController/AndroidManifest.xml @@ -68,6 +68,7 @@ <uses-permission android:name="android.permission.NFC_PREFERRED_PAYMENT_INFO" /> <uses-permission android:name="android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES" /> <uses-permission android:name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER" /> + <uses-permission android:name="android.permission.MANAGE_CLIPBOARD_ACCESS_NOTIFICATION" /> <application android:name="com.android.permissioncontroller.PermissionControllerApplication" android:label="@string/app_name" diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/PrivacyControlsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/PrivacyControlsViewModel.kt index 2f5702321..41b16e8be 100644 --- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/PrivacyControlsViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/model/PrivacyControlsViewModel.kt @@ -16,7 +16,9 @@ package com.android.permissioncontroller.safetycenter.ui.model +import android.annotation.SuppressLint import android.app.Application +import android.content.ClipboardManager import android.content.Intent import android.hardware.SensorPrivacyManager import android.hardware.SensorPrivacyManager.Sensors @@ -32,6 +34,8 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import com.android.modules.utils.build.SdkLevel +import com.android.permission.flags.Flags import com.android.permissioncontroller.R import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData import com.android.settingslib.RestrictedLockUtils @@ -39,10 +43,15 @@ import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin /** Viewmodel for the privacy controls page. */ @RequiresApi(Build.VERSION_CODES.TIRAMISU) +// Suppress warnings related to the camera/mic privacy and clipboard privacy APIs. The PC has the +// permissions. +@SuppressLint("MissingPermission") class PrivacyControlsViewModel(private val app: Application) : AndroidViewModel(app) { private val sensorPrivacyManager: SensorPrivacyManager = app.getSystemService(SensorPrivacyManager::class.java)!! + private val clipboardManager: ClipboardManager = + app.getSystemService(ClipboardManager::class.java)!! private val userManager: UserManager = app.getSystemService(UserManager::class.java)!! private val CONFIG_CLIPBOARD_SHOW_ACCESS_NOTIFICATIONS = @@ -161,6 +170,10 @@ class PrivacyControlsViewModel(private val app: Application) : AndroidViewModel( } private fun isClipboardEnabled(): Boolean { + if (SdkLevel.isAtLeastU() && Flags.useApiForClipboardPrivacyToggle()) { + return clipboardManager.areClipboardAccessNotificationsEnabled() + } + val clipboardDefaultEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_CLIPBOARD, @@ -176,6 +189,11 @@ class PrivacyControlsViewModel(private val app: Application) : AndroidViewModel( } private fun toggleClipboard() { + if (SdkLevel.isAtLeastU() && Flags.useApiForClipboardPrivacyToggle()) { + clipboardManager.setClipboardAccessNotificationsEnabled(!isClipboardEnabled()) + return + } + val newState = if (isClipboardEnabled()) 0 else 1 Settings.Secure.putInt( app.contentResolver, diff --git a/flags/flags.aconfig b/flags/flags.aconfig index 839acb963..2e357ec3a 100644 --- a/flags/flags.aconfig +++ b/flags/flags.aconfig @@ -27,6 +27,17 @@ flag { } flag { + name: "use_api_for_clipboard_privacy_toggle" + namespace: "permissions" + description: "This flag guards whether the Privacy Controls page uses a hardcoded string or an API to control clipboard privacy" + bug: "263305143" + metadata { + purpose: PURPOSE_BUGFIX + } + is_fixed_read_only: true +} + +flag { name: "archiving_read_only" namespace: "permissions" description: "Feature flag to enable the archiving feature." |