Intereting Posts
Как сделать прозрачный градиент? Как разместить значок приложения на главном экране пусковой установки? Получить значок файла apk, версию, имя Проверка использования кнопки громкости при выключенном экране Как обнаружить системную информацию типа os или типа устройства Независимость разрешения в Android SurfaceView В чем разница между getDir и getFilesDir на Android? Как отправить изображение (растровое изображение) на сервер в android с данными из нескольких форм json Как обнаружить жестов салфетки на веб-просмотре Отслеживание рефералов Android не работает с Google Play Почему я получаю исключение InstantiationException, если пытаюсь запустить службу? Espresso 2 на Android, промежуточные тесты терпят неудачу после того, как не запущена тестируемая активность, а действия предыдущих тестов все еще живы Android: отправка массива byte через Http POST Удалить границу, отложить из диалога Android ViewPager's onPageScrollStateChanged никогда не вызывается

Как найти MAC-адрес устройства Android программно

Как получить программный код Mac Id устройства Android. Я сделал с кодом IMIE, и я знаю, как проверять MAC-идентификатор на устройстве вручную, но не знаю, как узнать программно.

Solutions Collecting From Web of "Как найти MAC-адрес устройства Android программно"

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wInfo = wifiManager.getConnectionInfo(); String macAddress = wInfo.getMacAddress(); 

Кроме того, добавьте ниже разрешение в файл манифеста

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

Обратитесь к изменениям Android 6.0 .

Чтобы предоставить пользователям более полную защиту данных, начиная с этой версии, Android удаляет программный доступ к локальному идентификатору оборудования для приложений с использованием API Wi-Fi и Bluetooth. Теперь методы WifiInfo.getMacAddress () и BluetoothAdapter.getAddress () возвращают постоянное значение 02: 00: 00: 00: 00: 00.

Чтобы получить доступ к идентификаторам оборудования соседних внешних устройств через Bluetooth и сканирование Wi-Fi, ваше приложение должно теперь иметь разрешения ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION.

См. Этот пост, где я представил пример Utils.java для реализации pure-java и работает без WifiManager. Некоторые устройства Android могут не иметь доступ к Wi-Fi или использовать проводку Ethernet.

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

С помощью этого кода вы также сможете получить MacAddress в Android 6.0

 public static String getMacAddr() { try { List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface nif : all) { if (!nif.getName().equalsIgnoreCase("wlan0")) continue; byte[] macBytes = nif.getHardwareAddress(); if (macBytes == null) { return ""; } StringBuilder res1 = new StringBuilder(); for (byte b : macBytes) { //res1.append(Integer.toHexString(b & 0xFF) + ":"); res1.append(String.format("%02X:",b)); } if (res1.length() > 0) { res1.deleteCharAt(res1.length() - 1); } return res1.toString(); } } catch (Exception ex) { } return "02:00:00:00:00:00"; } 
 **its Working** package com.keshav.fetchmacaddress; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Collections; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("keshav","getMacAddr -> " +getMacAddr()); } public static String getMacAddr() { try { List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface nif : all) { if (!nif.getName().equalsIgnoreCase("wlan0")) continue; byte[] macBytes = nif.getHardwareAddress(); if (macBytes == null) { return ""; } StringBuilder res1 = new StringBuilder(); for (byte b : macBytes) { // res1.append(Integer.toHexString(b & 0xFF) + ":"); res1.append(String.format("%02X:",b)); } if (res1.length() > 0) { res1.deleteCharAt(res1.length() - 1); } return res1.toString(); } } catch (Exception ex) { //handle exception } return ""; } } **EDIT 1.** This answer got a bug where a byte that in hex form got a single digit, will not appear with a "0" before it. The append to res1 has been changed to take care of it. StringBuilder res1 = new StringBuilder(); for (byte b : macBytes) { // res1.append(Integer.toHexString(b & 0xFF) + ":"); res1.append(String.format("%02X:",b)); }