Open taontech opened 1 year ago
private fun android10andMoreVersionsWithoutOuterInternet( scanResult: ScanResult, wifiSSID: String, wifiPassword: String, capabilities: String ) { // Android 10 (API level 29) -- Android Q (Android 10) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val wifiManager = this.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder() .setSsid(wifiSSID) //.setSsidPattern(PatternMatcher(wifiSSID, PatternMatcher.PATTERN_PREFIX)) .setWpa2Passphrase(wifiPassword) .build() val networkRequest = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) //.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) //.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) //.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .setNetworkSpecifier(wifiNetworkSpecifier) .build() val connectivityManager = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { Log.d("NETWORK", "Network available") super.onAvailable(network) // To make sure that requests don't go over mobile data connectivityManager.bindProcessToNetwork(network) //unregister network callback //connectivityManager.unregisterNetworkCallback(this) // connectivityManager.bindProcessToNetwork(null) gotoNextScreen(scanResult, wifiManager) } override fun onUnavailable() { Log.d("NETWORK", "Network unavailable") super.onUnavailable() } override fun onLosing(network: Network, maxMsToLive: Int) { Log.d("NETWORK", "onLosing") super.onLosing(network, maxMsToLive) } override fun onLost(network: Network) { Log.d("NETWORK", "onLost") super.onLost(network) //connectivityManager.bindProcessToNetwork(null) //connectivityManager.unregisterNetworkCallback(this) } } connectivityManager.requestNetwork(networkRequest, networkCallback) val builder = NetworkRequest.Builder() builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI) connectivityManager.registerNetworkCallback(builder.build(), networkCallback) //connectivityManager.registerNetworkCallback(networkRequest, networkCallback) // For listen } }