You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API 23以下版本中,BroadcastReceiver内如何判断WiFi扫描是否成功

API 23 以下版本获取 WiFi 扫描完成状态的方案

在 API 23(Android 6.0)及以上版本,我们可以通过WifiManager.EXTRA_RESULTS_UPDATED直接判断扫描是否成功,但这个字段在更低版本中不存在,需要换一种方式处理:

  • 依旧监听WifiManager.SCAN_RESULTS_AVAILABLE_ACTION广播事件
  • 在广播接收器的onReceive方法中,调用WifiManager.getScanResults()获取扫描结果,通过结果是否有效来判定扫描状态

具体代码实现如下:

val wifiScanReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
        val scanResults = wifiManager.scanResults
        // 以扫描结果非空作为扫描成功的判定依据
        val success = scanResults.isNotEmpty()
        if (success) {
            scanSuccess()
        } else {
            scanFailure()
        }
    }
}

补充说明

这种方式无法严格区分「扫描操作本身失败」和「扫描成功但无可用WiFi信号」的场景。如果需要更精准的判断,可以在发起扫描时记录时间戳,在广播回调中对比当前时间,若超出合理时长仍未得到有效结果,则判定为扫描失败。

内容的提问来源于stack exchange,提问作者morteza mgh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:59:56