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

Кажется, что реализация java.net.NetworkInterface для android не имеет byte [] getHardwareAddress() 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, и вы можете легко получить адрес Hardware.

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

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

Ответ 1

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

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

Сделав немного руткинга, похоже, что он использует getMacAddress() от WifiInfo.

Ответ 2

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

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

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

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

Ответ 3

UPDATE:

Начиная с 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

Ответ 4

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

 <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();
    }

Ответ 5

На Android Q больше нет доступа к mac-адресу.

WifiInfo.getMacAddress() всегда будет возвращать 02:00:00:00:00:00.

И WifiConfiguration.getRandomizedMacAddress() больше не будет доступен.