我想知道是否有一些代码片段可用于将 Android 设备连接到 WiFi 网络。网络应该是开放的或 WEP/WPA 加密的,并且对该设备可见。通常,我们使用GUI界面输入WiFi密码并点击连接按钮。我想将密码存储在一个地方,并使用密码无缝连接到网络,而无需人工交互。这可能吗?
谢谢大家。在您的帮助下,我现在能够轻松连接到 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);
技巧是:
为了使 OP 示例代码正常工作,我必须再添加一行:
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
没有那条线,它就无法连接到网络。配置已被接受并添加,但未进行任何连接尝试。我实际上在 logcat 窗口中收到以下消息:
Event [WPA: Failed to select WPA/RSN] android
这让我找到了最终的解决方案,并找出了为什么它对我不起作用。
WifiManager - 您是否尝试过在这里查看。 addNetwork() 方法看起来可以做你想做的事情。您所要做的就是将信息放入 WifiConfiguration 类中,然后添加网络,然后启用该连接。文档就在那里。
查看“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" />
等等...