要查找自己设备的MAC地址,NetworkInterface是否可以安全使用?

时间:2018-02-08 12:49:13

标签: android wifi mac-address network-interface

我已经看到通过标准方法找到自己的MAC地址(Wifi或BT),比如这个 -

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

自Android M以来已被弃用。

给出的理由是用户数据的安全性。

但是,使用NetworkInterface,我们仍然可以获得MAC地址 -

Enumeration<NetworkInterface> all = NetworkInterface.getNetworkInterfaces();
while(all.hasMoreElements()) {
     NetworkInterface nif = all.nextElement();
     if (nif.getName().equalsIgnoreCase("wlan0"))
     {
         byte[] macBytes = nif.getHardwareAddress();
         //do stuff here
     }
}

是否存在可能失败的情况(当前版本以及即将推出的Android版本)?

1 个答案:

答案 0 :(得分:0)

在我们的代码库中,我们使用两种方法来检索MAC地址。关于某些设备在Wi-Fi关闭时没有返回MAC地址的评论,所以如果nif.getHardwareAddress(),还有默认MAC地址的后备。返回null。

如果它为null我们将其设置为Android 6.0默认MAC地址:“02:00:00:00:00:00”