2019-08-14 Android Wi-Fi信息获取时遇到的

2019-08-14  本文已影响0人  HaloMartin

一. Wi-Fi已开启,偶尔会遇到获取不到Wi-Fi列表信息

正确的开发流程如下:

  1. Wi-Fi开启,特别是开发者代码中开启Wi-Fi
  2. 检查WifiManager.getWifiState()是否等于WifiManager.WIFI_STATE_ENABLED
  3. 系统默认调用WifiManager.startscan()或开发者调用
  4. 监听WifiManager.SCAN_RESULTS_AVAILABLE_ACTION广播
  5. 通过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)

上一篇下一篇

猜你喜欢

热点阅读