我正在开发一个需要在后台服务中连接到 Wi-Fi 的项目,该服务在设备屏幕关闭时运行。连接代码如下:
public boolean connect_android(String ssid) {
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
boolean find = false;
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals("\"" + ssid + "\"")) {
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
find = true;
break;
}
}
而在后台运行服务中执行连接代码后,设备永远不会成功连接到Wi-Fi,直到屏幕打开。我记录了请求者状态,它处于完整状态。正如谷歌文档所说:
此状态表示请求者已完成关联阶段的处理,并且数据连接已完全配置。但是请注意,可能还没有任何与该连接关联的 IP 地址。通常,此时需要发送 DHCP 请求以获取地址。
所以我可以得出结论,当屏幕打开时,发送 DHCP 请求,设备接收 IP 并且连接成功完成。但是谁负责发送 DHCP、wpa_supplicant 或 Android 框架,有没有关于这个的文档?如何在不打开屏幕的情况下连接到 Wi-Fi AP?提前致谢!