[Catalyst] Add settings service
Bug: 372981584
Flag: com.android.settings.flags.catalyst_service
Test: Manual
Change-Id: I0bb3752e65e879bd831b7d8c83ea160be32a893e
diff --git a/Android.bp b/Android.bp
index 28c3148..575f051 100644
--- a/Android.bp
+++ b/Android.bp
@@ -98,6 +98,7 @@
"SettingsLibDataStore",
"SettingsLibMetadata",
"SettingsLibPreference",
+ "SettingsLibService",
"aconfig_settings_flags_lib",
"accessibility_settings_flags_lib",
"contextualcards",
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6408ab1..0025aba 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -5299,6 +5299,17 @@
android:enabled="true"
android:exported="false" />
+ <!-- Once b/364771256 is fixed, add android:featureFlag="com.android.settings.flags.catalyst_service". -->
+ <!-- Permission is not yet finalized, use READ_BASIC_PHONE_STATE temporarily. -->
+ <service
+ android:name=".SettingsService"
+ android:exported="true"
+ android:permission="android.permission.READ_BASIC_PHONE_STATE">
+ <intent-filter>
+ <action android:name="com.android.settingslib.PREFERENCE_SERVICE" />
+ </intent-filter>
+ </service>
+
<receiver android:name="com.android.settings.connecteddevice.audiosharing.AudioSharingReceiver"
android:exported="false">
<intent-filter>
diff --git a/aconfig/settings_flag_declarations.aconfig b/aconfig/settings_flag_declarations.aconfig
index a9c7bd5..6eb1e02 100644
--- a/aconfig/settings_flag_declarations.aconfig
+++ b/aconfig/settings_flag_declarations.aconfig
@@ -63,3 +63,10 @@
description: "Flag for all screens"
bug: "323791114"
}
+
+flag {
+ name: "catalyst_service"
+ namespace: "android_settings"
+ description: "Flag for catalyst service"
+ bug: "323791114"
+}
diff --git a/src/com/android/settings/SettingsService.kt b/src/com/android/settings/SettingsService.kt
new file mode 100644
index 0000000..2cd706b
--- /dev/null
+++ b/src/com/android/settings/SettingsService.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings
+
+import android.content.Intent
+import android.os.IBinder
+import com.android.settings.flags.Flags
+import com.android.settingslib.service.PreferenceService
+
+/** Service to expose settings APIs. */
+class SettingsService : PreferenceService({ _, _, _ -> true }) {
+
+ override fun onBind(intent: Intent): IBinder? {
+ return if (!Flags.catalystService()) null else super.onBind(intent)
+ }
+}