public static String getMac() {
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!"wlan0".equalsIgnoreCase(nif.getName())) {
continue;
}
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null || macBytes.length == 0) {
continue;
}
StringBuilder result = new StringBuilder();
for (byte b : macBytes) {
result.append(String.format("%02X", b));
}
return result.toString().toUpperCase();
}
} catch (Exception x) {
x.printStackTrace();
}
return "";
}
참고 :
1. 휴대폰 시스템 인 경우 위의 방법으로 올바른 MAC 주소, 즉 무선 네트워크 카드의 MAC 주소를 가져올 수 있습니다.
2. TV 시스템 인 경우 위의 방법으로 MAC 주소를 얻을 수없는 경우가 있습니다. 그 이유는 TV 시스템에 유선 네트워크 카드와 무선 네트워크 카드라는 두 개의 네트워크 카드가 있으므로 TV 시스템에 동시에 두 개의 MAC 주소가 있기 때문입니다. 무선 MAC 주소는 무선 네트워크 스위치가 켜져있을 때만 얻을 수 있습니다. 유선 MAC 주소는 어떤 상황에서도 얻을 수 있으므로 TV 시스템은 유선 네트워크 카드의 MAC 주소를 장치의 MAC 주소로 사용하도록 권장합니다. 유선 MAC 주소를 얻으려면 위의 알고리즘에서 "wlan0"매개 변수를 "eth0"으로 변경해야합니다.