Безопасно ли использовать NetworkInterface для поиска MAC-адреса собственного устройства?

Я видел, что нахождение собственного 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 ответ

В нашей кодовой базе мы используем оба метода для получения MAC-адреса. Есть комментарий о том, что некоторые устройства не возвращают MAC-адрес, когда Wi-Fi выключен, поэтому есть также запасной вариант для MAC-адреса по умолчанию, если nif.getHardwareAddress(); возвращает ноль.

Если значение равно нулю, мы устанавливаем его в MAC-адрес Android 6.0 по умолчанию: "02:00:00:00:00:00"

Другие вопросы по тегам