it-roy-ru.com

Как получить MAC-адрес сетевого интерфейса WiFi?

Похоже, что реализация Java.net.NetworkInterface Android не имеет
byte [] getHardwareAddress () method http://developer.Android.com/reference/Java/net/NetworkInterface.html

Я нашел несколько форумов людей, пытающихся сделать это без однозначного ответа, мне нужно получить несколько UUID для нескольких устройств, поэтому я не могу полагаться на номера телефонов или Android_ID (которые могут быть перезаписаны и которые, я думаю, зависят на пользователя, имеющего учетную запись Google) http://developer.Android.com/reference/Android/provider/Settings.Secure.html#Android_ID

В Linux вы можете использовать ifconfig или читать из/proc/net/arp, и вы можете легко получить аппаратный адрес.

Есть ли в Android файл, который я могу прочитать?

Должен быть способ получить этот адрес, поскольку он отображается в «Настройках> О телефоне> Состояние» телефона.

39
Gubatron

Должен быть способ получить это адрес, так как он показан в «Настройки> О телефоне> Статус» телефон.

А это значит, если не что иное, вы можете покопаться в открытом исходном коде Android, возможно, с помощью Google Code Search, чтобы выяснить, откуда он это берет.

Делая небольшую ошибку, кажется, что он использует getMacAddress() из WifiInfo.

22
CommonsWare

Поздний ответ, но он может помочь другим с той же «проблемой».

ответ действительно прост:

WifiManager wifiMan = (WifiManager) this.getSystemService(
                Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
String macAddr = wifiInf.getMacAddress();

Приведенный выше код даст вам MAC-адрес вашего устройства, не забудьте включить Wi-Fi при захвате адреса. Этот фрагмент кода должен использоваться в вашей деятельности.

93
Tobiaswk

Обновление:

Начало Android 6.0выше API предоставит вам постоянный MAC-адрес для всех устройств, который 02: 00: 00: 00: 00: 00, Смотрите ниже для деталей
http://developer.Android.com/about/versions/Marshmallow/Android-6.0-changes.html
Нашел еще один пост, который утверждает, что нашел MAC-адрес в 6.0, но не проверял его
Как получить Wi-Fi Mac-адрес в Android Marshmallow

5
Kaps

Добавить следующее разрешение.

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

WifiManager инициализировать в onCreate.

 WifiManager wifiMgr = (WifiManager) getContext().getSystemService(context.WIFI_SERVICE);

Используйте следующую функцию.

 public void WI-FI_MAC() {
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
    String macAddress = wifiInfo.getMacAddress();
    }
0
Quantum4U