从Android 8.0 开始,Android 设备在未连接到网络的情况下探测新网络时,会使用随机分配的 MAC 地址。在Android 9 中,您可以启用一个开发者选项(默认处于停用状态),使设备在连接到 WLAN 网络时使用随机分配的 MAC 地址。
在Android 10 中,默认为客户端模式、SoftAp 和WLAN 直连启用随机分配 MAC 地址功能。
随机分配 MAC 地址可防止监听器使用 MAC 地址来生成设备活动的历史记录,从而加强对用户隐私的保护。
此外,在Wi-Fi 感知和Wi-Fi RTT 操作中也会使用随机分配的 MAC 地址。
实现
要在设备上实现随机分配 MAC 地址,请执行以下操作:
与WLAN 芯片供应商合作实现以下 HAL 方法:
IWifiStaIface#setMacAddress:配置接口的 MAC 地址。默认实现会关闭接口、更改 MAC 地址,然后重新启用接口。IWifiStaIface#getFactoryMacAddress:使用ioctl调用获取wlan0的出厂 MAC 地址。ISupplicantP2pIface#setMacRandomization:在客户端中开启/关闭点对点随机分配 MAC 地址功能。
在“设置”config.xml中,将config_wifi_connected_mac_randomization_supported设置为true(此步骤可在设备自定义叠加层中完成)。
此标志用于控制是否启用客户端模式随机分配 MAC 地址功能。
在“设置”config.xml中,将config_wifi_p2p_mac_randomization_supported设置为true(此步骤可在设备自定义叠加层中完成)。
此标志用于控制是否启用 WLAN 直连随机分配 MAC 地址功能。
使用验证中所述的方法测试实现。
系统界面必须:
提供为每个 SSID 启用或停用随机分配 MAC 地址功能的选项。默认为所有新添加的网络启用随机分配 MAC 地址功能。
使用设置界面的参考实现来实现新提示。
搭载 Android 9 或更低版本的设备可能不支持随机分配 WLAN MAC 地址的功能。将此类设备升级到 Android 1