Как проверить, включено или отключено регулирование сканирования WiFi?
У меня есть сценарий разработки, в котором мне нужно проверить, включена или отключена опция дросселирования WiFi?
Если он включен, я хочу отключить его программно.
private fun prepareForWiFiScan() {
Toast.makeText(this, "Wifi scan preparation started", Toast.LENGTH_SHORT).show()
circularProgressbar.visibility = View.VISIBLE
wiFiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
if (!wiFiManager.isWifiEnabled) {
wiFiManager.isWifiEnabled = true
}
wiFiScanReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Toast.makeText(this@MainActivity, "Wifi scan finished", Toast.LENGTH_SHORT).senter code herehow()
val i'sSuccess: Boolean = when {
android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M -> intent.getBooleanExtra(
WifiManager.EXTRA_RESULTS_UPDATED,
false
)
else -> intent.getBooleanExtra(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION, false)
}
circularProgressbar.visibility = View.GONE
when (isSuccess) {
true -> scanSuccess()
false -> scanFail()
}
}
}
registerReceiverAndStartScan()
}
private fun registerReceiverAndStartScan() {
val intentFilter = IntentFilter()
intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
registerReceiver(wiFiScanReceiver, intentFilter)
val success = wiFiManager.startScan()
if (!success) {
scanFail()
}
}
4 ответа
На самом деле вы также можете проверить дроссель Wi-Fi в версиях Android < 10, используя
Settings.Global.getInt(this.getContentResolver(), "wifi_scan_throttle_enabled")
Он возвращается 1
если дроссель Wi-Fi включен, 0
иначе
До Android 10 нет возможности проверить, включен или отключен дроссель сканирования WiFi. Однако в Android R добавлен новый метод проверки того, включено или отключено регулирование сканирования WiFi. Пожалуйста, обратитесь по следующей ссылке. https://developer.android.com/reference/android/net/wifi/WifiManager
Это работает через корневую командную оболочку в Android 11. Возвращает false, если «Дросселирование сканирования Wi-Fi» отключено в параметрах разработчика. Хотелось бы, чтобы был более простой способ установить это значение с помощью команды, а не устанавливать его с помощью нескольких нажатий графического интерфейса Android.
dumpsys wifi | grep wifi_scan_throttle_enabled
Для получения этого вы должны использовать broadcastReceiver. Проверьте здесь https://developer.android.com/guide/topics/connectivity/wifi-scan