[Catalyst] Introduce SettingsContract file

The new file contains all contract constants for external usages (e.g.
slice, external Get/Set API). Also reuse existing constants in
SettingsSlicesContract.

NO_IFTTT=Catalyst only

Bug: 388061003
Flag: EXEMPT refactor
Test: atest
Change-Id: I449b7b6cf82e1e102f2c96a21835191605f09943
This commit is contained in:
Jacky Wang
2025-02-04 15:39:57 +08:00
parent 1ecacd8a5a
commit 2e265d4a7a
8 changed files with 49 additions and 14 deletions

View File

@@ -25,7 +25,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.provider.SettingsSlicesContract;
import android.util.Log;
import androidx.core.graphics.drawable.IconCompat;
@@ -37,6 +36,7 @@ import androidx.slice.builders.SliceAction;
import com.android.settings.R;
import com.android.settings.SubSettings;
import com.android.settings.connecteddevice.BluetoothDashboardFragment;
import com.android.settings.contract.SettingsContractKt;
import com.android.settings.network.SatelliteRepository;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver;
@@ -118,7 +118,7 @@ public class BluetoothSliceBuilder {
public static Intent getIntent(Context context) {
final String screenTitle = context.getText(R.string.bluetooth_settings_title).toString();
final Uri contentUri = new Uri.Builder().appendPath(
SettingsSlicesContract.KEY_BLUETOOTH).build();
SettingsContractKt.KEY_BLUETOOTH).build();
return SliceBuilderUtils.buildSearchResultPageIntent(context,
BluetoothDashboardFragment.class.getName(), null /* key */, screenTitle,
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,

View File

@@ -0,0 +1,34 @@
/*
* Copyright (C) 2025 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.contract
import android.provider.SettingsSlicesContract
/** Contract key for the "Airplane Mode" setting. */
const val KEY_AIRPLANE_MODE = SettingsSlicesContract.KEY_AIRPLANE_MODE
/** Contract key for the "Battery Saver" setting. */
const val KEY_BATTERY_SAVER = SettingsSlicesContract.KEY_BATTERY_SAVER
/** Contract key for the "Bluetooth" setting. */
const val KEY_BLUETOOTH = SettingsSlicesContract.KEY_BLUETOOTH
/** Contract key for the "Location" setting. */
const val KEY_LOCATION = SettingsSlicesContract.KEY_LOCATION
/** Contract key for the "Wi-fi" setting. */
const val KEY_WIFI = SettingsSlicesContract.KEY_WIFI

View File

@@ -29,6 +29,7 @@ import android.provider.SettingsSlicesContract;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.contract.SettingsContractKt;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.fuelgauge.BatterySaverReceiver;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -73,7 +74,7 @@ public class BatterySaverButtonPreferenceController extends TogglePreferenceCont
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_BATTERY_SAVER)
.appendPath(SettingsContractKt.KEY_BATTERY_SAVER)
.build();
}

View File

@@ -17,10 +17,10 @@
package com.android.settings.location;
import static android.provider.SettingsSlicesContract.KEY_LOCATION;
import static androidx.slice.builders.ListBuilder.ICON_IMAGE;
import static com.android.settings.contract.SettingsContractKt.KEY_LOCATION;
import android.annotation.ColorInt;
import android.app.PendingIntent;
import android.app.settings.SettingsEnums;

View File

@@ -37,6 +37,7 @@ import androidx.preference.TwoStatePreference;
import com.android.settings.AirplaneModeEnabler;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.contract.SettingsContractKt;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnDestroy;
@@ -64,7 +65,7 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_AIRPLANE_MODE)
.appendPath(SettingsContractKt.KEY_AIRPLANE_MODE)
.build();
private Fragment mFragment;

View File

@@ -16,9 +16,6 @@
package com.android.settings.slices;
import static android.provider.SettingsSlicesContract.KEY_LOCATION;
import static android.provider.SettingsSlicesContract.KEY_WIFI;
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.SettingsSlicesContract;
@@ -26,6 +23,7 @@ import android.util.ArrayMap;
import androidx.annotation.VisibleForTesting;
import com.android.settings.contract.SettingsContractKt;
import com.android.settings.display.AlwaysOnDisplaySlice;
import com.android.settings.display.ScreenTimeoutPreferenceController;
import com.android.settings.flashlight.FlashlightSlice;
@@ -68,7 +66,7 @@ public class CustomSliceRegistry {
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_BLUETOOTH)
.appendPath(SettingsContractKt.KEY_BLUETOOTH)
.build();
/**
@@ -115,7 +113,7 @@ public class CustomSliceRegistry {
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_LOCATION)
.appendPath(SettingsContractKt.KEY_LOCATION)
.build();
/**
* Backing Uri for Low storage Slice.
@@ -240,7 +238,7 @@ public class CustomSliceRegistry {
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_WIFI)
.appendPath(SettingsContractKt.KEY_WIFI)
.build();
/**

View File

@@ -17,8 +17,8 @@
package com.android.settings.wifi.slice;
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static android.provider.SettingsSlicesContract.KEY_WIFI;
import static com.android.settings.contract.SettingsContractKt.KEY_WIFI;
import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;

View File

@@ -53,6 +53,7 @@ import androidx.slice.SliceProvider;
import androidx.slice.widget.SliceLiveData;
import com.android.settings.Utils;
import com.android.settings.contract.SettingsContractKt;
import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeToggleController;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
@@ -626,7 +627,7 @@ public class SettingsSliceProviderTest {
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_LOCATION)
.appendPath(SettingsContractKt.KEY_LOCATION)
.build();
mProvider.onSlicePinned(uri);