Android 10.0中对隐私权(权限)做了变更。这里总结一些与 WLAN 相关的。
1、对直接访问已配置的 WLAN 网络实施了限制
如果应用以 Android 10 或更高版本为目标平台,并且应用不是系统应用或 DPC,则下列方法不会返回有用数据:
- getConfiguredNetworks() 方法始终返回空列表。
- 每个返回整数值的网络操作方法(addNetwork() 和 updateNetwork())始终返回 -1。
- 每个返回布尔值的网络操作(removeNetwork()、reassociate()、enableNetwork()、disableNetwork()、reconnect() 和 disconnect())始终返回 false。
2、一些WLAN API 需要精确位置权限
WLAN - WifiManager
startScan()
getScanResults()
getConnectionInfo()
getConfiguredNetworks() - WifiAwareManager
- WifiP2pManager
- WifiRttManager
其中WiFi Direct 功能必须开启 Location(GPS定位) 才可以使用。如果定位未打开,则WiFi Direct栏处于灰色无法使用状态。
android/packages/apps/Settings/src/com/android/settings/wifi/p2p/WifiP2pPreferenceController.java
public void updateState(Preference preference) {
super.updateState(preference);
preference.setEnabled(mLocationManager.isLocationEnabled() && mWifiManager.isWifiEnabled());
}