Подключение к указанному c WiFi (Android Q) - PullRequest
1 голос
/ 04 февраля 2020

В моем приложении я пытаюсь автоматически подключиться к указанному 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)
}

1 Ответ

1 голос
/ 04 февраля 2020

Согласно этой теме (https://support.google.com/pixelphone/thread/13670154?hl=en), это известная проблема на некоторых устройствах, которые Google скоро исправит. Просто проверьте, работает ли он с 2,4 ГГц SSID. Я надеюсь, что это поможет вам.

...