Безопасно ли использовать 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"