Android «В обход одобрения пользователя» для второго программного подключения к определенной сети Wi-Fi не работает

#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. Через некоторое время устройство интернета вещей отключает Wi-Fi на несколько секунд
  5. Обратный вызов разъединения повторяет попытку вызова метода «connectToAP» (пункт 1), но утверждение пользователя (пункт 2) не обходится, как ожидалось

Что я делаю не так? Спасибо!