WifiManager: Add API for scan always available toggle

Needed for moving away from using Settings.Global values as pseudo APIs.

Bug: 148514485
Test: atest android.net.wifi
Test: Verified wifi wifi scan toggle in location settings.
Change-Id: Iec75d331c7866180a55a327813466323c565319a
This commit is contained in:
Roshan Pius
2020-02-12 12:48:00 -08:00
parent 1861fa18be
commit 6398957728
4 changed files with 34 additions and 0 deletions

View File

@@ -7750,6 +7750,7 @@ package android.net.wifi {
method @RequiresPermission(android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE) public void setDeviceMobilityState(int);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMacRandomizationSettingPasspointEnabled(@NonNull String, boolean);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMeteredOverridePasspoint(@NonNull String, int);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanAlwaysAvailable(boolean);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanThrottleEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean setSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setVerboseLoggingEnabled(boolean);

View File

@@ -125,6 +125,8 @@ interface IWifiManager
DhcpInfo getDhcpInfo();
void setScanAlwaysAvailable(boolean isAvailable);
boolean isScanAlwaysAvailable();
boolean acquireWifiLock(IBinder lock, int lockType, String tag, in WorkSource ws);

View File

@@ -2754,6 +2754,26 @@ public class WifiManager {
}
}
/**
* Set if scanning is always available.
*
* If set to {@code true}, apps can issue {@link #startScan} and fetch scan results
* even when Wi-Fi is turned off.
*
* @param isAvailable true to enable, false to disable.
* @hide
* @see #isScanAlwaysAvailable()
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void setScanAlwaysAvailable(boolean isAvailable) {
try {
mService.setScanAlwaysAvailable(isAvailable);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
* Check if scanning is always available.
*

View File

@@ -2401,4 +2401,15 @@ public class WifiManagerTest {
assertFalse(mWifiManager.isAutoWakeupEnabled());
verify(mWifiService).isAutoWakeupEnabled();
}
@Test
public void testScanAvailable() throws Exception {
mWifiManager.setScanAlwaysAvailable(true);
verify(mWifiService).setScanAlwaysAvailable(true);
when(mWifiService.isScanAlwaysAvailable()).thenReturn(false);
assertFalse(mWifiManager.isScanAlwaysAvailable());
verify(mWifiService).isScanAlwaysAvailable();
}
}