我想知道是否有一些可用于将Android设备连接到WiFi网络的代码段。网络应该是开放的或WEP / WPA加密的,并且对该设备可见。通常,我们使用GUI界面输入WiFi密码并点击连接按钮。我想将密码存储在一个地方,并使用密码无缝连接到网络,无需人工干预。那可能吗?非常感谢。
答案 0 :(得分:14)
谢谢你们。在您的帮助下,我现在能够毫不费力地连接到WPA / PSK加密网络。这是我的代码片段:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// setup a wifi configuration
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"YOUR_SSID\"";
wc.preSharedKey = "\"YOUR_PASSWORD\"";
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
// connect to and enable the connection
int netId = wifiManager.addNetwork(wc);
wifiManager.enableNetwork(netId, true);
wifiManager.setWifiEnabled(true);
技巧是:
答案 1 :(得分:3)
为了使OP示例代码工作,我不得不再添加一行:
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
如果没有该行,它将无法连接到网络。接受并添加配置,但不进行任何连接尝试。我实际上在logcat窗口中收到以下消息:
Event [WPA: Failed to select WPA/RSN] android
这让我找到了最终的解决方案,弄清楚它为什么不适合我。
答案 2 :(得分:2)
WifiManager - 你试过看这里吗? addNetwork()方法看起来可以做你想做的事。您所要做的就是将信息放在WifiConfiguration类中,然后添加网络,然后启用该连接。文档就在那里。
答案 3 :(得分:1)
查看“WifiManager”
的文档它可用于启用wifi:
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
它可以用来做许多其他事情。
编辑:在监控和更改wifi状态时不要忘记更新权限,例如:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
等...