diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
index ba383a8..3125dfa 100644
--- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
+++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
@@ -269,8 +269,6 @@
     private void assertNetworkAccess(boolean expectAvailable) throws Exception {
         final Intent intent = new Intent(ACTION_CHECK_NETWORK);
 
-        // When the network info state change, it's possible the app still get the previous value,
-        // so we need to retry a couple times.
         final int maxTries = 5;
         String resultData = null;
         for (int i = 1; i <= maxTries; i++) {
@@ -287,8 +285,14 @@
             final String networkInfo = parts[4];
 
             if (expectAvailable) {
-                assertTrue("should be connected: " + connectionCheckDetails
-                        + " (network info: " + networkInfo + ")", connected);
+                if (!connected) {
+                    // Since it's establishing a connection to an external site, it could be flaky.
+                    Log.w(TAG, "Failed to connect to an external site on attempt #" + i +
+                            " (error: " + connectionCheckDetails + ", NetworkInfo: " + networkInfo
+                            + "); sleeping " + NETWORK_TIMEOUT_MS + "ms before trying again");
+                    SystemClock.sleep(NETWORK_TIMEOUT_MS);
+                    continue;
+                }
                 if (state != State.CONNECTED) {
                     Log.d(TAG, "State (" + state + ") not set to CONNECTED on attempt #" + i
                             + "; sleeping 1s before trying again");
@@ -303,6 +307,8 @@
                 assertFalse("should not be connected: " + connectionCheckDetails
                         + " (network info: " + networkInfo + ")", connected);
                 if (state != State.DISCONNECTED) {
+                    // When the network info state change, it's possible the app still get the
+                    // previous value, so we need to retry a couple times.
                     Log.d(TAG, "State (" + state + ") not set to DISCONNECTED on attempt #" + i
                             + "; sleeping 1s before trying again");
                     SystemClock.sleep(SECOND_IN_MS);
@@ -313,7 +319,8 @@
                 }
             }
         }
-        fail("Invalid state after " + maxTries + " attempts. Last data: " + resultData);
+        fail("Invalid state for expectAvailable=" + expectAvailable + " after " + maxTries
+                + " attempts. Last data: " + resultData);
     }
 
     protected String executeShellCommand(String command) throws Exception {
diff --git a/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyBroadcastReceiver.java b/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyBroadcastReceiver.java
index 96e9d2b..0eff6ab 100644
--- a/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyBroadcastReceiver.java
+++ b/tests/cts/hostside/app2/src/com/android/cts/net/hostside/app2/MyBroadcastReceiver.java
@@ -174,7 +174,7 @@
             @Override
             public void run() {
                 // TODO: connect to a hostside server instead
-                final String address = "http://example.com";
+                final String address = "http://google.com";
                 final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
                 Log.d(TAG, "Running checkNetworkStatus() on thread "
                         + Thread.currentThread().getName() + " for UID " + getUid(context)
