Как получить 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()
больше не будет доступен.