2013-08-06 29 views
5

Muszę sprawdzić dla każdej sieci zwróconej przez metodę getScanResults(), jeśli jest już skonfigurowana w urządzeniu, to znaczy, muszę sprawdzić, czy istnieje na liście zwróconej przez getConfiguredNetworks(). Problem polega na tym, jak mogę to zrobić, ponieważ jedynym wspólnym parametrem jest SSID? Wiem, że nie byłby to dobry sposób na to, ponieważ może istnieć więcej sieci z tym samym SSID. Jak podano w odnośniku, networkId to numer identyfikacyjny używany przez suplikanta do identyfikacji tego wpisu konfiguracji sieci, ale nie mogę znaleźć czegoś podobnego dla obiektu ScanResult.Sprawdź, czy sieć ScanResult jest już skonfigurowana (istnieje na liście getConfiguredNetworks()).

Więc jeśli to jest mój odbiornik:

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)); 

i to w jaki sposób mogę uzyskać skonfigurowanych sieciach:

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

Czy istnieje sposób, aby sprawdzić, czy list.get (i) odpowiada results.get (j) konfiguracja, dla czegokolwiek i lub j?

Odpowiedz

3

Można sprawdzić, czy identyfikatory BSSID obu sieci są zgodne. ScanResult i WifiConfiguration dostarczają BSSID, który jest unikalny dla sieci.

+1

Problemem jest to, że getConfiguredNetworks() zwraca wartość null dla BSSID – Ben

+0

@Ben Jedyne razy dostaniesz null dla BSSID to: 1. wificonfiguration został ręcznie zapisane i BSSID została niewłaściwie przechowywane 2. wifimanager jest nie jest jeszcze gotowy (zdarza się to rzadko i mało prawdopodobne w niestandardowych kompilacjach) –

+0

+ Sreedevi J Co masz na myśli mówiąc, że wifimanager nie jest jeszcze gotowy? Otrzymuję null z BSSID oraz – x0a