我需要以编程方式在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{
}
}