diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index 460d5f9f1db80..1ed0c408e99bd 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -413,7 +413,8 @@ public class Tethering extends BaseNetworkObserver implements IControlsTethering mWifiTetherRequested = enable; final WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); - if (wifiManager.setWifiApEnabled(null /* use existing wifi config */, enable)) { + if ((enable && wifiManager.startSoftAp(null /* use existing wifi config */)) || + (!enable && wifiManager.stopSoftAp())) { return ConnectivityManager.TETHER_ERROR_NO_ERROR; } return ConnectivityManager.TETHER_ERROR_MASTER_ERROR; diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/tests/net/java/com/android/server/connectivity/TetheringTest.java index e527d57f73672..35f3fcf1ee3b2 100644 --- a/tests/net/java/com/android/server/connectivity/TetheringTest.java +++ b/tests/net/java/com/android/server/connectivity/TetheringTest.java @@ -183,8 +183,6 @@ public class TetheringTest { @Test public void workingLocalOnlyHotspot() throws Exception { when(mConnectivityManager.isTetheringSupported()).thenReturn(true); - when(mWifiManager.setWifiApEnabled(any(WifiConfiguration.class), anyBoolean())) - .thenReturn(true); // Emulate externally-visible WifiManager effects, causing the // per-interface state machine to start up, and telling us that @@ -234,13 +232,12 @@ public class TetheringTest { @Test public void workingWifiTethering() throws Exception { when(mConnectivityManager.isTetheringSupported()).thenReturn(true); - when(mWifiManager.setWifiApEnabled(any(WifiConfiguration.class), anyBoolean())) - .thenReturn(true); + when(mWifiManager.startSoftAp(any(WifiConfiguration.class))).thenReturn(true); // Emulate pressing the WiFi tethering button. mTethering.startTethering(ConnectivityManager.TETHERING_WIFI, null, false); mLooper.dispatchAll(); - verify(mWifiManager, times(1)).setWifiApEnabled(null, true); + verify(mWifiManager, times(1)).startSoftAp(null); verifyNoMoreInteractions(mWifiManager); verifyNoMoreInteractions(mConnectivityManager); verifyNoMoreInteractions(mNMService); @@ -286,7 +283,7 @@ public class TetheringTest { // Emulate pressing the WiFi tethering button. mTethering.stopTethering(ConnectivityManager.TETHERING_WIFI); mLooper.dispatchAll(); - verify(mWifiManager, times(1)).setWifiApEnabled(null, false); + verify(mWifiManager, times(1)).stopSoftAp(); verifyNoMoreInteractions(mWifiManager); verifyNoMoreInteractions(mConnectivityManager); verifyNoMoreInteractions(mNMService);