检查是否已配置ScanResult网络(存在于getConfiguredNetworks()列表中)

时间:2013-08-06 09:32:43

标签: android networking configuration wifi wifimanager

我需要检查getScanResults()方法返回的每个网络(如果已经在设备中配置),也就是说,我需要检查它是否存在于getConfiguredNetworks()返回的列表中。 问题是:我怎么能这样做,因为它们共同的唯一参数是SSID?我知道这不是一个好方法,因为可能有更多的网络具有相同的SSID。 如参考文献中所述,networkId是请求者用于标识此网络配置条目的ID号,但我找不到与ScanResult对象类似的内容。

所以如果这是我的接收者:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
registerReceiver(new BroadcastReceiver()
       {
           @Override
           public void onReceive(Context c, Intent intent) 
           {
              results = wifi.getScanResults();
              size = results.size();
           }
       }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 

这就是我获得配置网络的方式:

List<WifiConfiguration> list = wifi.getConfiguredNetworks();

有没有办法检查list.get(i)是否对应于results.get(j)配置,无论是i还是j?

1 个答案:

答案 0 :(得分:4)

您可以检查两个网络的BSSID是否匹配。 ScanResult和WifiConfiguration都提供BSSID,这对网络来说是唯一的。