2013-08-06 36 views
5

Tôi cần kiểm tra mọi mạng được trả về bởi phương thức getScanResults() nếu nó đã được cấu hình trong thiết bị, nghĩa là tôi cần kiểm tra xem nó có tồn tại không trong danh sách được trả về bởi getConfiguredNetworks(). Vấn đề là: làm thế nào tôi có thể làm điều này vì tham số duy nhất mà họ có điểm chung là SSID? Tôi biết điều này sẽ không phải là cách tốt để làm điều đó bởi vì có thể có nhiều mạng với cùng một SSID. Như đã nêu trong tham chiếu, networkId là số ID mà người dùng sử dụng để xác định mục nhập cấu hình mạng này, nhưng tôi không thể tìm thấy một cái gì đó tương tự cho đối tượng ScanResult.Kiểm tra xem mạng ScanResult đã được cấu hình chưa (tồn tại trong danh sách getConfiguredNetworks())

Vì vậy, nếu đây là nhận của tôi:

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

và đây là làm thế nào tôi có được các mạng cấu hình:

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

Có cách nào để kiểm tra xem list.get (i) tương ứng với results.get (j) cấu hình, cho bất cứ điều gì i hoặc j?

Trả lời

3

Bạn có thể kiểm tra xem BSSID của cả hai mạng có khớp không. ScanResult và WifiConfiguration đều cung cấp BSSID, là duy nhất cho mạng.

+1

Vấn đề là các getConfiguredNetworks() trả về null cho bssid – Ben

+0

@Ben Những lần duy nhất bạn sẽ nhận được một null cho BSSID là: 1. wificonfiguration được bằng tay lưu và bssid được sai lưu trữ 2. wifimanager là chưa sẵn sàng (điều này chỉ xảy ra hiếm khi và khó xảy ra trong các bản dựng không tùy chỉnh. –

+0

+ Sreedevi J Bạn có ý nghĩa gì về wifimanager chưa? Tôi nhận được null từ BSSID cũng như – x0a

Các vấn đề liên quan