Получите MAC-адрес устройства Android без Wi-Fi

Как получить MAC-адрес сетевого интерфейса устройства Android, у которого нет Wifi-интерфейса (например, эмулятора Android)? WifiInfo, полученный через WifiManager, возвращает null .

РЕДАКТИРОВАТЬ

Чтобы быть более ясным: мне нужно связаться с существующим сетевым протоколом (не разработанным мной) в локальной сети, где я должен отправить MAC-адрес коммуникационного интерфейса в пределах полезной нагрузки во время фазы регистрации.

Чтение / sys / class / net / [something] / address в виде текстового файла

Но вряд ли это будет полезно в том, как вы думаете.

Я собираюсь сделать скачок и предположить, что вы хотите этот MAC-адрес, чтобы установить уникальный идентификатор устройства. Адреса Mac – это не способ сделать это.

Есть блог блога разработчиков Android под названием « Идентификация приложений », который охватывает тему генерации уникальных идентификаторов достаточно хорошо, включая популярные методы и плюсы / минусы. Это определенно стоит прочитать. Весьма актуальным для этого сообщения является следующая цитата:

Возможно, можно получить адрес Mac с устройства WiFi или Bluetooth устройства. Мы не рекомендуем использовать это как уникальный идентификатор. Для начала не все устройства имеют WiFi. Кроме того, если Wi-Fi не включен, аппаратное обеспечение может не сообщать адрес Mac.

Доступные вам варианты include TelephonyManager.getDeviceId (), android.os.Build.SERIAL и Settings.Secure.ANDROID_ID, все из которых более подробно описаны в связанной записи.

См. Этот пост, где я представил пример Utils.java, чтобы обеспечить реализацию pure-java.

 Utils.getMACAddress("wlan0"); Utils.getMACAddress("eth0"); Utils.getIPAddress(true); // IPv4 Utils.getIPAddress(false); // IPv6 

Каков сетевой интерфейс, на который вы хотите получить MAC-адрес? Если нет Wi-Fi, вы, конечно же, не сможете получить MAC-адрес устройства Wi-Fi. Он представляет физическое оборудование, и если его нет, его просто не существует.

Чтобы получить wifi MAC устройства Android, используйте adb: adb shell getprop ril.wifi_macaddr

Используйте следующий код на Java, чтобы получить его программным путем:

 Process p = Runtime.getRuntime.exec("adb", "shell", "getprop", "ril.wifi_macaddr") BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()); String macAddress = br.readLine(); 
  • Получить MAC-адрес на локальной машине с помощью Java
  • Как я могу запросить таблицу ARP на iPhone?
  • Как я могу программно получить MAC-адрес iphone
  • Отображается ли ваш MAC-адрес при попадании на сайт?
  • Резервное копирование DHCP и фильтрация MAC-адресов. Являются ли они одинаковой ценностью?
  • Учитывая MAC-адрес компьютера, могу ли я найти его IP-адрес?
  • Как создать действительный случайный MAC-адрес с оболочкой bash
  • Что происходит, когда два компьютера в одной сети имеют один и тот же MAC-адрес?
  • Откройте общедоступный IP-адрес сети без подключения
  • Как определить MAC-адрес фактической физической сетевой карты - не виртуальные сетевые интерфейсы, созданные VPN (.NET C #),
  • Как найти MAC-адрес моего компьютера?
  • Давайте будем гением компьютера.