如何以编程方式在Android中连接到WPA2-PSK Wi-Fi网络?

时间:2018-05-01 19:11:38

标签: android wifi

我需要以编程方式在Android中连接到WiFi(esp8266 nodeMCU)。 该网络的SSID为Hide,安全性为WPA2-PSK。 它也没有连接到互联网,它是一个本地网络。

我尝试使用此代码,但我无法连接到HotSpot。 的" enableNetworkBoolean"是"假"。但我可以在设置中连接到热点。

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{

    }
}

0 个答案:

没有答案