diff --git a/src/com/android/settings/SettingsService.kt b/src/com/android/settings/SettingsService.kt index 2cd706b9b14..33385280ed9 100644 --- a/src/com/android/settings/SettingsService.kt +++ b/src/com/android/settings/SettingsService.kt @@ -16,15 +16,31 @@ package com.android.settings +import android.app.Application import android.content.Intent -import android.os.IBinder import com.android.settings.flags.Flags +import com.android.settingslib.graph.PreferenceSetterRequest +import com.android.settingslib.ipc.ApiPermissionChecker import com.android.settingslib.service.PreferenceService /** Service to expose settings APIs. */ -class SettingsService : PreferenceService({ _, _, _ -> true }) { +class SettingsService : + PreferenceService( + graphPermissionChecker = ApiPermissionChecker.alwaysAllow(), + setterPermissionChecker = SetterPermissionChecker(), + ) { - override fun onBind(intent: Intent): IBinder? { - return if (!Flags.catalystService()) null else super.onBind(intent) - } + override fun onBind(intent: Intent) = + if (Flags.catalystService()) super.onBind(intent) else null +} + +/** Permission checker for external setter API. */ +private class SetterPermissionChecker : ApiPermissionChecker { + + override fun hasPermission( + application: Application, + myUid: Int, + callingUid: Int, + request: PreferenceSetterRequest, + ) = true }