以编程方式第二次连接到特定 Wi-Fi 网络的 Android "Bypassing user approval"无法正常工作

标签 android android-wifi wifi-direct programmatically

按照 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 的第二个连接必须绕过用户批准。

我的问题是:

  1. 调用“connectToAP
  2. 用户认可
  3. 已联系
  4. 一段时间后,IoT 设备会关闭 wifi 几秒钟
  5. 断开连接回调会重试调用“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/

相关文章:

android - 将经度和纬度传递给 google directions api

java - wifiManager.getScanResults() 返回 0

c# - 在 Windows 上使用 WiFi Direct Api?

android - wifi连接改变了android中的 Action

android - 如何在android中获取WIFI接口(interface)的MAC地址?

android - Android Wifi P2P : failed to connect to/192. 168.49.1(端口1080):isConnected失败:ECONNREFUSED(连接被拒绝)

android - Android 上的 Mesh/p2p 网络,无需用户交互

Android 与 One Plus 上的 ESP8266 连接(Android 6.0.1)

android - 我无法从 adb 版本 1.0.29 升级

android - 如何使用 android/eclipse 上的登录页面保持项目始终打开