Android“绕过用户批准”对于第二个以编程方式连接到特定Wi-Fi网络的操作不起作用。

3
根据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. 一段时间后,物联网设备关闭wifi几秒钟
  5. 断开连接回调重试调用“connectToAP”方法(点1),但预期未绕过用户批准(点2)

我做错了什么?


只需在wifi连接说明符上放置SSID,即可完成此项工作。 - FABiO
@FABiO就像我的例子一样,但它不起作用...另外第二个连接需要批准。 - Giovesoft
1个回答

1

这里我为您提供一个val修饰符的示例,注意其中的魔法在setBssid中设置了一个值,在使用它时,系统不会显示窗口批准。

WifiNetworkSpecifier = if(isDevice8424){
                WifiNetworkSpecifier.Builder()
                    .setSsid(ssid)
                    .setBssid(MacAddress.fromString(bssid))//here ir the magic!
                    .build()

@Giovesoft,我相信在第二个意图连接中,系统不会再次询问您是否喜欢连接。希望这可以帮到您 =) - FABiO
1
谢谢,使用“setBssid”已经生效! - Giovesoft
太好了,问候!!! - FABiO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接