В моем приложении я пытаюсь автоматически подключиться к указанному c ssid (в android Q). Я использую классы "WifiNetworkSpecifier", "NetworkRequest" и "ConnectivityManager", чтобы сделать это .. Поэтому, когда я делаю запрос, на экране появляется диалоговое окно с просьбой подключиться к этому ssid. Я нажимаю, а затем он подключается. Но есть две проблемы:
1 - Это не совсем связано (нет inte rnet) .. Я должен отключить и включить Wi-Fi, чтобы иметь возможность быть действительно подключенным!
2 - Когда я очищаю приложение из памяти, оно автоматически отключается.
Я ищу решение этих проблем, но недостаточно примеров или примеров. Вот как я делаю это в своем исходном коде:
fun connectToWifi(networkSSID: String, networkPassword: String?, bssid: String?)
val specifier = WifiNetworkSpecifier.Builder()
.setSsid(networkSSID)
if (networkPassword != null) {
specifier.setWpa2Passphrase(networkPassword)
}
if (bssid != null) {
specifier.setBssid(MacAddress.fromString(bssid))
}
val request = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier.build())
.build()
val connectivityManager =
singletonArgument.context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network?) {
Log.d(TAG, "network available")
}
override fun onUnavailable() {
Log.d(TAG, "network unavailable")
}
}
connectivityManager.requestNetwork(request, networkCallback)
}