WifiManager を使用して、利用可能な wifi をスキャンしました。
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
mainWifi.startScan();
ネットワークのリストを取得できます。
しかし、この場合、特定のwifi SSIDに接続しようとすると String hotspot="some_wifi_name";、ホットスポットがWifiConfigに追加されますが、その後、接続中に無限ループに入り、結果を再度スキャンすると、ループが続きます。
以下はBroadcast Receiver、このSSIDを接続するために使用したものです。
class WifiReceiver extends BroadcastReceiver {
ArrayList<String> connections = new ArrayList<String>();
WifiConfiguration conf;
public void onReceive(Context c, Intent intent) {
WifiManager wifiManager = (WifiManager) c
.getSystemService(Context.WIFI_SERVICE);
List<ScanResult> wifiList;
wifiList = mainWifi.getScanResults();
for (int i = 0; i < wifiList.size(); i++) {
String ssid = wifiList.get(i).SSID;
int rssi = wifiList.get(i).level;
Log.d("SSID: ", "" + wifiList.get(i).SSID.toString()
+ " signal: " + rssi);
if (ssid != null && ssid.equals(hotspot)) {
Log.d("SSID Hotspot: ",
"" + wifiList.get(i).SSID.toString());
conf = new WifiConfiguration();
conf.SSID = "\"" + hotspot + "\"";
conf.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(conf);
}
}
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
loops:
for (WifiConfiguration j : list) {
if (j.SSID != null && j.SSID.equals("\"" + hotspot + "\"")) {
Log.d("Config", "" + j.SSID);
wifiManager.disconnect();
wifiManager.enableNetwork(j.networkId, true);
wifiManager.reconnect();
}
}
}
}
目的の SSID を取得した後、再度 Wi-Fi をスキャンし、無限ループに入ります。どこが間違っているのか .