diff --git a/src/com/android/settings/notification/MediaVolumePreference.kt b/src/com/android/settings/notification/MediaVolumePreference.kt index b644381b8a0..02bf82479c0 100644 --- a/src/com/android/settings/notification/MediaVolumePreference.kt +++ b/src/com/android/settings/notification/MediaVolumePreference.kt @@ -16,7 +16,10 @@ package com.android.settings.notification +import android.Manifest.permission.MODIFY_AUDIO_SETTINGS +import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED import android.content.Context +import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE import android.media.AudioManager.STREAM_MUSIC import android.os.UserManager import androidx.preference.Preference @@ -24,6 +27,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 @@ -77,9 +82,19 @@ open class MediaVolumePreference : } } + 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) + 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