Android 10+的可用WiFi网络列表

wvmv3b1j  于 2023-10-14  发布在  Android
关注(0)|答案(1)|浏览(152)

不知何故,不同的应用程序的智能设备(灯泡,婴儿监视器等)能够显示自定义屏幕与可用的WiFi网络的列表。怎么可能实现?
我知道从Android 10(API级别29)开始,

WifiManager.startScan()

方法已被弃用。而且不再可能直接获得所有可用WiFi网络的列表。

ecbunoof

ecbunoof1#

如果有些东西在android上被弃用,这意味着你应该在提供的时候使用替代方法。到目前为止还没有提供替代方案。这意味着当前的startScan()是扫描WiFi网络的唯一方法。
如Android here所述,您必须执行以下操作才能获得扫描结果

val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager

val wifiScanReceiver = object : BroadcastReceiver() {

  override fun onReceive(context: Context, intent: Intent) {
    val success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false)
    if (success) {
      scanSuccess()
    } else {
      scanFailure()
    }
  }
}

val intentFilter = IntentFilter()
intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
context.registerReceiver(wifiScanReceiver, intentFilter)

val success = wifiManager.startScan()
if (!success) {
  // scan failure handling
  scanFailure()
}

....

private fun scanSuccess() {
  val results = wifiManager.scanResults
  ... use new scan results ...
}

private fun scanFailure() {
  // handle failure: new scan did NOT succeed
  // consider using old scan results: these are the OLD results!
  val results = wifiManager.scanResults
  ... potentially use older scan results ...
}

相关问题