2010-04-08 3 views
37

кажется реализация java.net.NetworkInterface Андроида не имеет метода с
байт [] getHardwareAddress() http://developer.android.com/reference/java/net/NetworkInterface.htmlКак получить MAC-адрес сетевого интерфейса WiFi?

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

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

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

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

+0

я отправил здесь рабочий раствор https://stackoverflow.com/a/47789324/5330408 ​​ –

ответ

22

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

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

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

+0

Этот код можно найти здесь https: // GitHub.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/wifi/AdvancedWifiSettings.java # L253-L265 – fernandohur

93

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

The answer действительно прямо вперед:

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

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

+23

просто для того, чтобы добавить некоторые детали, вам нужно будет добавить соответствующее разрешение на androidManifest.xml, чтобы получить его work:

+2

Не обязательно иметь WiFi, чтобы получить MAC-адрес. Я получаю его с Wi-Fi. – jzafrilla

5

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, не проверял, хотя
How to get Wi-Fi Mac address in Android Marshmallow

0

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

<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(); 
    } 
Смежные вопросы