一. Wi-Fi已开启,偶尔会遇到获取不到Wi-Fi列表信息
正确的开发流程如下:
- Wi-Fi开启,特别是开发者代码中开启Wi-Fi
- 检查WifiManager.getWifiState()是否等于WifiManager.WIFI_STATE_ENABLED
- 系统默认调用WifiManager.startscan()或开发者调用
- 监听WifiManager.SCAN_RESULTS_AVAILABLE_ACTION广播
- 通过WifiManager.getScanResults()获取Wi-Fi信息返回
实际使用时,一般是等待系统默认调用startscan(),开发者跳过了监听广播WifiManager.SCAN_RESULTS_AVAILABLE_ACTION,直接使用WifiManager.getScanResults()获取Wi-Fi列表信息,因为Wi-Fi开启到获取到Wi-Fi列表,有一定的时间差,特别是对一些比较旧的机型,需要的时间较久,直接结果就是,系统还没有获取到最新的Wi-Fi列表,开发者的程序就已经调用了getScanResults()获取Wi-Fi列表信息,此时的Wi-Fi列表还是为开启Wi-Fi时的列表,即为空,从开启Wi-Fi到可以获取到Wi-Fi列表信息,这个时间差可长可短,一般在10秒或以上。
特别注意的是,如果手机已连接Wi-Fi,则Wi-Fi列表肯定可以获取到,除非App缺少相关权限时,此时应在获取到权限时,重新进行
步骤2
至步骤5
的过程以获取Wi-Fi列表信息。
代码参考链接:Android WIFI开发、扫描、连接和密码验证(https://blog.csdn.net/u011974987/article/details/50551580)
网友评论