android n wifi scan,Android WiFi扫描

  • Post author:
  • Post category:其他


Wifi扫描

权限方面

必须权限如下:

ACCESS_WIFI_STATE(用于扫描结束后读取wifi信息)

CHANGE_WIFI_STATE(用于扫描WiFi列表)

除必须权限外,根据系统版本,还有不同的限制。具体如下

Android 8.0 & 8.1

WifiManager.getScanResults() 方法的调用必须具备以下任一权限:

ACCESS_FINE_LOCATION

ACCESS_COARSE_LOCATION

CHANGE_WIFI_STATE

事实上,从6.0开始,WifiManager.getScanResults() 方法就需要定位权限了。见[硬件标识符访问权]

否则会抛异常SecurityException。

Android 9.0

WifiManager.startScan() 方法的调用必须满足以下所有条件:

拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限

拥有 CHANGE_WIFI_STATE 权限

打开定位服务

否则会抛异常SecurityException。

Android Q & later

在9.0版限制的基础上,对定位的要求升级为:必须拥有精确定位权限(ACCESS_FINE_LOCATION)

频率方面

Android对WifiManager.startScan()的调用频率进行了限制。对于超过此频率的接口访问,WifiManager 不会执行完整扫描,而是提供上次扫描所缓存的结果。

Android 8.0 &