Android 11中的WiFi Mac地址

在Android 11中,获取设备的WiFi Mac地址需要进行一些改变。由于用户隐私问题,Android 11不再允许应用程序直接访问设备的硬件标识符,包括WiFi Mac地址。

获取WiFi Mac地址的改变

在Android 11及更高版本中,应用程序需要使用WifiInfo#getMacAddress()方法来获取WiFi Mac地址。这个方法返回的是用于扫描、连接WiFi网络的接口的MAC地址,而不是设备的真实物理地址。

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String macAddress = wifiInfo.getMacAddress();

需要注意的是,为了获取WiFi Mac地址,应用程序需要在AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

关系图

erDiagram
    User ||--| WifiInfo : 使用
    WifiInfo {
        String MacAddress
    }

旅行图

journey
    title 获取WiFi Mac地址的旅程
    section 请求权限
        User: 向用户请求获取WiFi Mac地址权限
    section 获取WiFi Mac地址
        User -> App: 打开应用程序
        App -> WifiManager: 获取WifiManager实例
        WifiManager -> WifiInfo: 获取WifiInfo实例
        WifiInfo -> MacAddress: 获取Mac地址

结论

如上所述,在Android 11中,获取设备的WiFi Mac地址需要通过WifiInfo#getMacAddress()方法来实现。同时,应用程序需要在AndroidManifest.xml中添加相应的权限声明。由于用户隐私保护,Android 11不再允许直接访问设备的硬件标识符,开发者需要注意这一点。