diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 21f6425..cf02960 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -37,6 +37,7 @@
 import androidx.preference.PreferenceCategory;
 
 import com.android.internal.accessibility.AccessibilityShortcutController;
+import com.android.internal.accessibility.util.AccessibilityUtils;
 import com.android.internal.content.PackageMonitor;
 import com.android.settings.R;
 import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType;
@@ -360,7 +361,7 @@
         // ACCESSIBILITY_MENU_IN_SYSTEM is a default pre-bundled interaction control service.
         // If the device opts out of including this service then this is a no-op.
         mPreBundledServiceComponentToCategoryMap.put(
-                AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM,
+                AccessibilityUtils.ACCESSIBILITY_MENU_IN_SYSTEM,
                 mCategoryToPrefCategoryMap.get(CATEGORY_INTERACTION_CONTROL));
 
         final List<RestrictedPreference> preferenceList = getInstalledAccessibilityList(
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index bf3951e..695e86b 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -52,6 +52,7 @@
 import androidx.preference.PreferenceManager;
 import androidx.test.core.app.ApplicationProvider;
 
+import com.android.internal.accessibility.util.AccessibilityUtils;
 import com.android.internal.content.PackageMonitor;
 import com.android.settings.R;
 import com.android.settings.testutils.XmlTestUtils;
@@ -333,11 +334,11 @@
     public void testAccessibilityMenuInSystem_IncludedInInteractionControl() {
         mShadowAccessibilityManager.setInstalledAccessibilityServiceList(
                 List.of(getMockAccessibilityServiceInfo(
-                        AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM)));
+                        AccessibilityUtils.ACCESSIBILITY_MENU_IN_SYSTEM)));
         setupFragment();
 
         final RestrictedPreference pref = mFragment.getPreferenceScreen().findPreference(
-                AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString());
+                AccessibilityUtils.ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString());
         final String prefCategory = mFragment.mServicePreferenceToPreferenceCategoryMap.get(
                 pref).getKey();
         assertThat(prefCategory).isEqualTo(AccessibilitySettings.CATEGORY_INTERACTION_CONTROL);
@@ -350,7 +351,7 @@
         setupFragment();
 
         final RestrictedPreference pref = mFragment.getPreferenceScreen().findPreference(
-                AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString());
+                AccessibilityUtils.ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString());
         assertThat(pref).isNull();
     }
 
