Как программно подключиться к сети Wi-Fi WPA2-PSK в Android? - PullRequest
0 голосов
/ 01 мая 2018

Мне нужно подключиться к WiFi (esp8266 nodeMCU) в Android программно. SSID этой сети - Hide, а безопасность - WPA2-PSK. также он не подключен к интернету, это локальная сеть.

Я пробую этот код, но не могу подключиться к HotSpot. «enableNetworkBoolean» равно «false». но я могу подключиться к точке доступа в настройках.

public class ConnWifi  {

public void Connect(Context context){
    WifiConfiguration config = new WifiConfiguration();
    config.SSID = ""reyhan112233"";
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        config.SSID = "reyhan112233";
    }
    config.preSharedKey = ""reyhan112233"";
    config.hiddenSSID = true;
    config.status = WifiConfiguration.Status.ENABLED;
    config.allowedGroupCiphers.set(WifiConfiguration.G  roupCipher.TKIP);
    config.allowedGroupCiphers.set(WifiConfiguration.G  roupCipher.CCMP);
    config.allowedKeyManagement.set(WifiConfiguration.  KeyMgmt.WPA_PSK);
    config.allowedPairwiseCiphers.set(WifiConfiguratio  n.PairwiseCipher.TKIP);
    config.allowedPairwiseCiphers.set(WifiConfiguratio  n.PairwiseCipher.CCMP);
    config.allowedProtocols.set(WifiConfiguration.Prot  ocol.RSN);
    config.allowedProtocols.set(WifiConfiguration.Prot  ocol.WPA);

    WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI  _SERVICE);

    int networkId = wifiManager.addNetwork(config);
    if(networkId != -1){
        connectWifi(config, wifiManager);
    }
}

private void connectWifi(WifiConfiguration config , WifiManager wifiManager) {
    wifiManager.disconnect();
    wifiManager.setWifiEnabled(true);
    boolean enableNetworkBoolean = wifiManager.enableNetwork(config.networkId, true);

    boolean reconnectBoolean = wifiManager.reconnect();
    boolean changeHappen = wifiManager.saveConfiguration();
    if(enableNetworkBoolean && reconnectBoolean && changeHappen){
    }
    else{

    }
}
...