按照 Android 文档,我使用此代码以编程方式连接到特定的 SSID:
private void connectToAP(String ssid, String password) {
...
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build();
NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(wifiNetworkSpecifier);
NetworkRequest request = requestBuilder.build();
connManager.requestNetwork(request, myNetworkCallback);
...
bindNetwork(); //this method will bind the network without internet
}
如文档中所述https://developer.android.com/guide/topics/connectivity/wifi-bootstrap#bypass-approval ,如果我没有忘记网络,则到该特定 SSID 的第二个连接必须绕过用户批准。
我的问题是:
- 调用“connectToAP”
- 用户认可
- 已联系
- 一段时间后,IoT 设备会关闭 wifi 几秒钟
- 断开连接回调会重试调用“connectToAP”方法(第 1 点),但未按预期绕过用户批准(第 2 点)
我做错了什么? 谢谢!
最佳答案
我在这里为您附上一个 val 说明符的示例,观察到这个魔法是在 setBssid 中放入一个值,这样就可以了,系统不会显示窗口批准。
WifiNetworkSpecifier = if(isDevice8424){
WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setBssid(MacAddress.fromString(bssid))//here ir the magic!
.build()
关于以编程方式第二次连接到特定 Wi-Fi 网络的 Android "Bypassing user approval"无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67717837/