diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index fb5ee8d945244e8b152439a92bd1d149130d6421..995602f27d2b68c89209b64342e88b94ac524ca5 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -10158,6 +10158,8 @@ package android.net.wifi.sharedconnectivity.service {
 
   public abstract class SharedConnectivityService extends android.app.Service {
     ctor public SharedConnectivityService();
+    method public static boolean areHotspotNetworksEnabledForService(@NonNull android.content.Context);
+    method public static boolean areKnownNetworksEnabledForService(@NonNull android.content.Context);
     method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
     method public abstract void onConnectHotspotNetwork(@NonNull android.net.wifi.sharedconnectivity.app.HotspotNetwork);
     method public abstract void onConnectKnownNetwork(@NonNull android.net.wifi.sharedconnectivity.app.KnownNetwork);
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 16511a678760de177381010407123e569c5449f6..27c477f3f241bedeb93df84fba4ffd1d0a905a9b 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3020,10 +3020,18 @@
             >com.android.systemui/com.android.systemui.wifi.WifiDebuggingSecondaryUserActivity</string>
 
     <!-- Package name of the system service that implements the shared connectivity service -->
-    <string translatable="false" name="shared_connectivity_service_package"></string>
+    <string translatable="false" name="config_sharedConnectivityServicePackage"></string>
 
     <!-- Intent action used when binding to the shared connectivity service -->
-    <string translatable="false" name="shared_connectivity_service_intent_action"></string>
+    <string translatable="false" name="config_sharedConnectivityServiceIntentAction"></string>
+
+    <!-- The system and settings UI can support all the features of instant tether. If set to false,
+     instant tether will run in notifications mode -->
+    <bool name="config_hotspotNetworksEnabledForService">false</bool>
+
+    <!-- The system and settings UI can support all the features of known networks. If set to false,
+         known networks will run in notifications mode -->
+    <bool name="config_knownNetworksEnabledForService">false</bool>
 
     <!-- Component name of the activity that shows the usb containment status. -->
     <string name="config_usbContaminantActivity" translatable="false"
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c34d31cca7ba34d4d78ec3eca03d7f3c24aeb59e..a15833d36870576f1ef1d042473ce64d58b03ef0 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4960,8 +4960,10 @@
   <java-symbol type="bool" name="config_stopSystemPackagesByDefault"/>
   <java-symbol type="string" name="config_wearServiceComponent" />
 
-  <java-symbol type="string" name="shared_connectivity_service_package" />
-  <java-symbol type="string" name="shared_connectivity_service_intent_action" />
+  <java-symbol type="string" name="config_sharedConnectivityServicePackage" />
+  <java-symbol type="string" name="config_sharedConnectivityServiceIntentAction" />
+  <java-symbol type="bool" name="config_hotspotNetworksEnabledForService"/>
+  <java-symbol type="bool" name="config_knownNetworksEnabledForService"/>
 
   <!-- Whether to show weather on the lockscreen by default. -->
   <java-symbol type="bool" name="config_lockscreenWeatherEnabledByDefault" />
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
index 6046415202520562f9b227af23afc1ee4502e3ae..15fd817ba73baf29f35bae6ec25a0e9ad0106744 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManager.java
@@ -161,9 +161,9 @@ public class SharedConnectivityManager {
         Resources resources = context.getResources();
         try {
             String servicePackageName = resources.getString(
-                    R.string.shared_connectivity_service_package);
+                    R.string.config_sharedConnectivityServicePackage);
             String serviceIntentAction = resources.getString(
-                    R.string.shared_connectivity_service_intent_action);
+                    R.string.config_sharedConnectivityServiceIntentAction);
             return new SharedConnectivityManager(context, servicePackageName, serviceIntentAction);
         } catch (Resources.NotFoundException e) {
             Log.e(TAG, "To support shared connectivity service on this device, the service's"
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java b/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
index c53da9c15d4d40a9eabbc09d1c262b777f70b14c..57108e4aa2275be601f93e513b20231d9af28684 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java
@@ -25,6 +25,7 @@ import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.app.Service;
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.wifi.sharedconnectivity.app.HotspotNetwork;
@@ -40,8 +41,11 @@ import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.util.Log;
 
+import com.android.internal.R;
+
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 
 /**
@@ -381,6 +385,30 @@ public abstract class SharedConnectivityService extends Service {
         mRemoteCallbackList.finishBroadcast();
     }
 
+    /**
+     * System and settings UI support on the device for instant tether.
+     * @return True if the UI can display Instant Tether network data. False otherwise.
+     */
+    public static boolean areHotspotNetworksEnabledForService(@NonNull Context context) {
+        String servicePackage = context.getResources()
+                .getString(R.string.config_sharedConnectivityServicePackage);
+        return Objects.equals(context.getPackageName(), servicePackage)
+                && context.getResources()
+                        .getBoolean(R.bool.config_hotspotNetworksEnabledForService);
+    }
+
+    /**
+     * System and settings UI support on the device for known networks.
+     * @return True if the UI can display known networks data. False otherwise.
+     */
+    public static boolean areKnownNetworksEnabledForService(@NonNull Context context) {
+        String servicePackage = context.getResources()
+                .getString(R.string.config_sharedConnectivityServicePackage);
+        return Objects.equals(context.getPackageName(), servicePackage)
+                && context.getResources()
+                        .getBoolean(R.bool.config_knownNetworksEnabledForService);
+    }
+
     /**
      * Implementing application should implement this method.
      *
diff --git a/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java b/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java
index 19effe5d6f142980ecbe133a1eef13a63870ddc4..b8b6b767eed36e7d051678f995b290a467a1824d 100644
--- a/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java
+++ b/wifi/tests/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityServiceTest.java
@@ -26,10 +26,12 @@ import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.net.wifi.sharedconnectivity.app.HotspotNetwork;
 import android.net.wifi.sharedconnectivity.app.HotspotNetworkConnectionStatus;
 import android.net.wifi.sharedconnectivity.app.KnownNetwork;
@@ -86,6 +88,9 @@ public class SharedConnectivityServiceTest {
     @Mock
     Context mContext;
 
+    @Mock
+    Resources mResources;
+
     static class FakeSharedConnectivityService extends SharedConnectivityService {
         public void attachBaseContext(Context context) {
             super.attachBaseContext(context);
@@ -180,6 +185,48 @@ public class SharedConnectivityServiceTest {
                 .isEqualTo(KNOWN_NETWORK_CONNECTION_STATUS);
     }
 
+    @Test
+    public void areHotspotNetworksEnabledForService() {
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mContext.getPackageName()).thenReturn("package");
+        when(mResources.getString(anyInt())).thenReturn("package");
+        when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+        assertThat(SharedConnectivityService.areHotspotNetworksEnabledForService(mContext))
+                .isTrue();
+    }
+
+    @Test
+    public void areHotspotNetworksEnabledForService_notSamePackage_shouldReturnFalse() {
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mContext.getPackageName()).thenReturn("package");
+        when(mResources.getString(anyInt())).thenReturn("other_package");
+        when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+        assertThat(SharedConnectivityService.areHotspotNetworksEnabledForService(mContext))
+                .isFalse();
+    }
+
+    @Test
+    public void areKnownNetworksEnabledForService() {
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mContext.getPackageName()).thenReturn("package");
+        when(mResources.getString(anyInt())).thenReturn("package");
+        when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+        assertThat(SharedConnectivityService.areKnownNetworksEnabledForService(mContext)).isTrue();
+    }
+
+    @Test
+    public void areKnownNetworksEnabledForService_notSamePackage_shouldReturnFalse() {
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mContext.getPackageName()).thenReturn("package");
+        when(mResources.getString(anyInt())).thenReturn("other_package");
+        when(mResources.getBoolean(anyInt())).thenReturn(true);
+
+        assertThat(SharedConnectivityService.areKnownNetworksEnabledForService(mContext)).isFalse();
+    }
+
     private SharedConnectivityService createService() {
         FakeSharedConnectivityService service = new FakeSharedConnectivityService();
         service.attachBaseContext(mContext);