diff --git a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java
index 3153149..98846fa 100644
--- a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java
@@ -2471,15 +2471,21 @@
 
         // Create and install a Passpoint configuration
         PasspointConfiguration passpointConfiguration = createPasspointConfiguration();
-        mWifiManager.addOrUpdatePasspointConfiguration(passpointConfiguration);
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            mWifiManager.addOrUpdatePasspointConfiguration(passpointConfiguration);
 
-        // Compare configurations
-        List<PasspointConfiguration> configurations = mWifiManager.getPasspointConfigurations();
-        assertNotNull(configurations);
-        assertEquals(passpointConfiguration, configurations.get(0));
+            // Compare configurations
+            List<PasspointConfiguration> configurations = mWifiManager.getPasspointConfigurations();
+            assertNotNull(configurations);
+            assertEquals(passpointConfiguration, configurations.get(0));
 
-        // Clean up
-        mWifiManager.removePasspointConfiguration(passpointConfiguration.getHomeSp().getFqdn());
+            // Clean up
+            mWifiManager.removePasspointConfiguration(passpointConfiguration.getHomeSp().getFqdn());
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
     }
 
     /**
