show suggestion in Wifi picker

Add API to get matched suggestion for given scanResults

Bug: 146423406
Test: atest android.net.wifi

Change-Id: Id2a6a7406498ddb281b1113c612ae076216e4f1e
This commit is contained in:
Nate(Qiang) Jiang
2019-12-18 11:14:28 -08:00
parent 2b00f7fc54
commit 7888cc304c
5 changed files with 53 additions and 0 deletions

View File

@@ -6024,6 +6024,7 @@ package android.net.wifi {
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void getWifiActivityEnergyInfoAsync(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiActivityEnergyInfoListener);
method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState();
method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.net.wifi.WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(@NonNull java.util.List<android.net.wifi.ScanResult>);
method public boolean isApMacRandomizationSupported();
method public boolean isConnectedMacRandomizationSupported();
method @Deprecated public boolean isDeviceToDeviceRttSupported();

View File

@@ -250,4 +250,6 @@ interface IWifiManager
void unregisterSuggestionConnectionStatusListener(int listenerIdentifier, String packageName);
int calculateSignalLevel(int rssi);
List<WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(in List<ScanResult> scanResults);
}

View File

@@ -1365,6 +1365,36 @@ public class WifiManager {
return configs;
}
/**
* Retrieve a list of {@link WifiConfiguration} for available {@link WifiNetworkSuggestion}
* matching the given list of {@link ScanResult}.
*
* An available {@link WifiNetworkSuggestion} must satisfy:
* <ul>
* <li> Matching one of the {@link ScanResult} from the given list.
* <li> and {@link WifiNetworkSuggestion.Builder#setIsUserAllowedToManuallyConnect(boolean)} set
* to true.
* </ul>
*
* @param scanResults a list of scanResult.
* @return a list of @link WifiConfiguration} for available {@link WifiNetworkSuggestion}
* @hide
*/
@SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_SETUP_WIZARD
})
@NonNull
public List<WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(
@NonNull List<ScanResult> scanResults) {
try {
return mService.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(scanResults);
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
}
}
/**
* Returns a list of unique Hotspot 2.0 OSU (Online Sign-Up) providers associated with a given
* list of ScanResult.

View File

@@ -589,4 +589,10 @@ public class BaseWifiService extends IWifiManager.Stub {
public int calculateSignalLevel(int rssi) {
throw new UnsupportedOperationException();
}
@Override
public List<WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(
List<ScanResult> scanResults) {
throw new UnsupportedOperationException();
}
}

View File

@@ -2185,4 +2185,18 @@ public class WifiManagerTest {
result = WifiManager.parseDppChannelList(channelList);
assertEquals(result.size(), 0);
}
/**
* Test getWifiConfigsForMatchedNetworkSuggestions for given scanResults.
*/
@Test
public void testGetWifiConfigsForMatchedNetworkSuggestions() throws Exception {
List<WifiConfiguration> testResults = new ArrayList<>();
testResults.add(new WifiConfiguration());
when(mWifiService.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(any(List.class)))
.thenReturn(testResults);
assertEquals(testResults, mWifiManager
.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(new ArrayList<>()));
}
}