diff --git a/api/system-current.txt b/api/system-current.txt index d19a52f14d733..831163910930f 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7406,6 +7406,7 @@ package android.net.wifi { method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String[] getFactoryMacAddresses(); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map> getMatchingOsuProviders(@Nullable java.util.List); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map getMatchingPasspointConfigsForOsuProviders(@NonNull java.util.Set); + method @NonNull @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public java.util.Map> getMatchingScanResults(@NonNull java.util.List, @Nullable java.util.List); method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public java.util.List getPrivilegedConfiguredNetworks(); method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.SoftApConfiguration getSoftApConfiguration(); method public int getVerboseLoggingLevel(); diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index 0b5969a8999d7..d13a625963b6a 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -260,4 +260,9 @@ interface IWifiManager boolean setWifiConnectedNetworkScorer(in IBinder binder, in IWifiConnectedNetworkScorer scorer); void clearWifiConnectedNetworkScorer(); + + /** + * Return the Map of {@link WifiNetworkSuggestion} and the list of + */ + Map getMatchingScanResults(in List networkSuggestions, in List scanResults, String callingPackage, String callingFeatureId); } diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 208ce9c37b231..f6e3ff0ff02ce 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -2684,6 +2684,34 @@ public class WifiManager { } } + /** + * Return the filtered ScanResults which may be authenticated by the suggested network + * configurations. + * @param networkSuggestions The list of {@link WifiNetworkSuggestion} + * @param scanResults The scan results to be filtered, this is optional, if it is null or + * empty, wifi system would use the recent scan results in the system. + * @return The map of {@link WifiNetworkSuggestion} and the list of {@link ScanResult} which + * may be authenticated by the corresponding network configuration. + * @hide + */ + @SystemApi + @RequiresPermission(allOf = {ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE}) + @NonNull + public Map> getMatchingScanResults( + @NonNull List networkSuggestions, + @Nullable List scanResults) { + if (networkSuggestions == null) { + throw new IllegalArgumentException("networkSuggestions must not be null."); + } + try { + return mService.getMatchingScanResults( + networkSuggestions, scanResults, + mContext.getOpPackageName(), mContext.getFeatureId()); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * Check if scanning is always available. * diff --git a/wifi/java/com/android/server/wifi/BaseWifiService.java b/wifi/java/com/android/server/wifi/BaseWifiService.java index 56fa6e23a8520..19d09d1f2a9c7 100644 --- a/wifi/java/com/android/server/wifi/BaseWifiService.java +++ b/wifi/java/com/android/server/wifi/BaseWifiService.java @@ -617,4 +617,12 @@ public class BaseWifiService extends IWifiManager.Stub { public void clearWifiConnectedNetworkScorer() { throw new UnsupportedOperationException(); } + + @Override + public Map> getMatchingScanResults( + List networkSuggestions, + List scanResults, + String callingPackage, String callingFeatureId) { + throw new UnsupportedOperationException(); + } }