我想知道是否有一些代码片段可用于将 Android 设备连接到 WiFi 网络。网络应该是开放的或 WEP/WPA 加密的,并且对该设备可见。通常,我们使用GUI界面输入WiFi密码并点击连接按钮。我想将密码存储在一个地方,并使用密码无缝连接到网络,无需人工干预。那可能吗?非常感谢。
问问题
18157 次
4 回答
15
多谢你们。在您的帮助下,我现在可以轻松连接到 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);
诀窍是:
- SSID 字符串需要用 " 括起来,用 \" 表示
- addNetwork() 方法默认禁用添加的网络,因此您应该使用 enableNetwork() 方法启用它。
于 2011-05-27T07:36:54.427 回答
3
为了使 OP 示例代码正常工作,我必须再添加一行:
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
没有那条线,它就无法连接到网络。接受并添加配置,但不进行连接尝试。我实际上在 logcat 窗口中收到以下消息:
Event [WPA: Failed to select WPA/RSN] android
这让我找到了最终的解决方案,弄清楚为什么它对我不起作用。
于 2011-07-03T17:27:24.493 回答
2
WifiManager - 你有没有试过看这里。addNetwork()方法看起来可以做你想做的事。您所要做的就是将信息放入WifiConfiguration类中,然后添加网络,然后启用该连接。文档就在那里。
于 2011-05-26T15:42:53.863 回答
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" />
ETC...
于 2011-05-26T15:46:05.723 回答