Я использую новый API 29 для подключения устройства к сети Wi-Fi на устройстве Android 10:
private val connectivityManager: ConnectivityManager by inject()
override fun connectToNetwork(ssid: String, password: String) {
val networkRequest = buildNetworkRequest(ssid, password)
val networkCallback =
object : NetworkCallback() {
override fun onAvailable(network: Network) {
super.onAvailable(network)
Timber.d("Connected to network $ssid")
}
override fun onUnavailable() {
super.onUnavailable()
Timber.e("Unable to connect to network $ssid")
}
}
connectivityManager.requestNetwork(networkRequest, networkCallback, CONNECTION_TIME_OUT)
}
private fun buildNetworkRequest(ssid: String, password: String) =
NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(buildWifiNetworkSpecifier(ssid, password))
.build()
private fun buildWifiNetworkSpecifier(ssid: String, password: String) =
WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build()
Появляется диалоговое окно с «Устройство для использования» с указанным сеть Wi-Fi в списке. В диалоге есть две кнопки «отменить» и «подключиться». Когда я нажимаю «подключить», устройство подключается к сети Wi-Fi (я вижу это в настройках системы), и кнопка подключения отключается.
Но диалоговое окно не исчезает go и ни методы в обратном вызове requestNetwork вызывается. В конце концов я достигаю указанного времени ожидания, и появляется другое диалоговое окно с сообщением «Что-то произошло. Приложение отменило запрос на выбор устройства».
Что здесь происходит? Я хочу подключиться к сети и вызвать методы 'onAvailable' или 'onUnavailable' в обратном вызове.