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