Merge "Fix CTS test failed on R device"
diff --git a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
index d8d4b59..ce874d1 100644
--- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -109,6 +109,7 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.internal.util.ArrayUtils;
+import com.android.modules.utils.build.SdkLevel;
 import com.android.testutils.DevSdkIgnoreRule;
 import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
 import com.android.testutils.RecorderCallback.CallbackEntry;
@@ -521,11 +522,12 @@
         mCm.registerDefaultNetworkCallback(defaultTrackingCallback);
 
         final TestNetworkCallback systemDefaultTrackingCallback = new TestNetworkCallback();
-        runWithShellPermissionIdentity(() ->
-                mCm.registerSystemDefaultNetworkCallback(systemDefaultTrackingCallback,
-                        new Handler(Looper.getMainLooper())),
-                NETWORK_SETTINGS);
-
+        if (SdkLevel.isAtLeastS()) {
+            runWithShellPermissionIdentity(() ->
+                    mCm.registerSystemDefaultNetworkCallback(systemDefaultTrackingCallback,
+                            new Handler(Looper.getMainLooper())),
+                    NETWORK_SETTINGS);
+        }
 
         Network wifiNetwork = null;
 
@@ -542,16 +544,20 @@
             assertNotNull("Did not receive onAvailable on default network callback",
                     defaultTrackingCallback.waitForAvailable());
 
-            assertNotNull("Did not receive onAvailable on system default network callback",
-                    systemDefaultTrackingCallback.waitForAvailable());
+            if (SdkLevel.isAtLeastS()) {
+                assertNotNull("Did not receive onAvailable on system default network callback",
+                        systemDefaultTrackingCallback.waitForAvailable());
+            }
         } catch (InterruptedException e) {
             fail("Broadcast receiver or NetworkCallback wait was interrupted.");
         } finally {
             mCm.unregisterNetworkCallback(callback);
             mCm.unregisterNetworkCallback(defaultTrackingCallback);
-            runWithShellPermissionIdentity(
-                    () -> mCm.unregisterNetworkCallback(systemDefaultTrackingCallback),
-                    NETWORK_SETTINGS);
+            if (SdkLevel.isAtLeastS()) {
+                runWithShellPermissionIdentity(
+                        () -> mCm.unregisterNetworkCallback(systemDefaultTrackingCallback),
+                        NETWORK_SETTINGS);
+            }
         }
     }