From 35b6dbd032f9283f985fc14197ef7002342d88b7 Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Thu, 26 Dec 2024 09:51:35 +0000 Subject: [PATCH] [Catalyst] Implement get{Read,Write}Permissions for Call volume NO_IFTTT=Catalyst only Fix: 386142831 Test: devtool Flag: com.android.settings.flags.catalyst_sound_screen Change-Id: I5ead6fa83dd6ce84f10c7352b60b354f1471f6c9 --- .../notification/CallVolumePreference.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/com/android/settings/notification/CallVolumePreference.kt b/src/com/android/settings/notification/CallVolumePreference.kt index 0e45b236248..3caac242316 100644 --- a/src/com/android/settings/notification/CallVolumePreference.kt +++ b/src/com/android/settings/notification/CallVolumePreference.kt @@ -16,7 +16,11 @@ package com.android.settings.notification +import android.Manifest.permission.MODIFY_AUDIO_SETTINGS +import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED +import android.Manifest.permission.MODIFY_PHONE_STATE import android.content.Context +import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE import android.media.AudioManager import android.media.AudioManager.STREAM_BLUETOOTH_SCO import android.media.AudioManager.STREAM_VOICE_CALL @@ -26,6 +30,8 @@ import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.NoOpKeyedObservable +import com.android.settingslib.datastore.Permissions +import com.android.settingslib.datastore.and import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceIconProvider @@ -76,9 +82,19 @@ open class CallVolumePreference : } } + override fun getReadPermissions(context: Context) = Permissions.EMPTY + override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) = ReadWritePermit.ALLOW + override fun getWritePermissions(context: Context): Permissions? { + var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS, MODIFY_PHONE_STATE) + if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) { + permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED + } + return permissions + } + override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) = ReadWritePermit.ALLOW