공부하는 다락방

안드로이드 6.0에서 디바이스 MACAddress 가져오는 방법 본문

Android

안드로이드 6.0에서 디바이스 MACAddress 가져오는 방법

권파인 2016. 6. 14. 15:52
안드로이드 6.0에서는 디바이스의 맥어드레스를 가져오지 못합니다.

그러나 다른방법으로 가져오는 방법은 있습니다. 
안드로이드의  /sys/class/net/wlan0/address에 Wifi에 대한 mac address의 값을 저장하고 있습니다.

public static String getMACAddress(String interfaceName) {
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) {
                if (interfaceName != null) {
                    if (!intf.getName().equalsIgnoreCase(interfaceName)) continue;
                }
                byte[] mac = intf.getHardwareAddress();
                if (mac==null) return "";
                StringBuilder buf = new StringBuilder();
                for (int idx=0; idx<mac.length; idx++)
                    buf.append(String.format("%02X:", mac[idx]));       
                if (buf.length()>0) buf.deleteCharAt(buf.length()-1);
                return buf.toString();
            }
        } catch (Exception ex) { } // for now eat exceptions

        return "";
    }

String macAddress = getMACAddress("wlan0");

테스트 해보니 잘 가져오고 있습니다.

덧붙여 말씀드리자면 해당 정보에 접근하기 위해서는 아래 두가지 퍼미션이 필요합니다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


Comments