获取Android开发板网络MAC地址

发布于:2024-05-16 ⋅ 阅读:(81) ⋅ 点赞:(0)

获取Android开发板WiFi无线网卡MAC地址和有线网卡MAC地址

硬件/软件环境:
1)全志芯片开发板A40i
2)Android Studio Giraffe | 2022.3.1 Patch 3

获取方式:
1)ADB方式:
ADB获取有线网卡MAC地址,在cmd.exe窗口中执行命令:
adb shell
cat /sys/class/net/eth0/address
如下图所示:
ADB获取有线网卡mac地址
ADB获取WiFi无线网卡MAC地址,在cmd.exe窗口中执行命令:
adb shell
cat /sys/class/net/wlan0/address
ADB获取WiFi无线网卡mac地址
2)代码方式:

AndroidManifest.xml添加权限内容:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

添加获取WiFi无线网卡MAC地址方法:

//获取WiFi无线网卡MAC地址
public String getWiFiMacAddress(){
    try {
        List<NetworkInterface> allNI = Collections.list(NetworkInterface.getNetworkInterfaces());
        for (NetworkInterface ni : allNI) {
            if (!ni.getName().equalsIgnoreCase("wlan0")) {
                continue;
            }
            byte[] macAddressBytes = ni.getHardwareAddress();
            if (null == macAddressBytes) {
                return "";
            }
            StringBuilder sb1 = new StringBuilder();
            for (byte mab : macAddressBytes) {
                sb1.append(String.format("%02X:", mab));
            }
            if (sb1.length() > 0) {
                sb1.deleteCharAt(sb1.length() - 1);
            }
            return sb1.toString();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "02:00:00:00:00:00";
}

添加获取有线网卡MAC地址方法:

//获取有线网卡MAC地址
public String getWiredMacAddress() {
    try {
        List<NetworkInterface> allNI = Collections.list(NetworkInterface.getNetworkInterfaces());
        for (NetworkInterface ni : allNI) {
            if (!ni.getName().contains("eth")) {
                continue;
            }
            if (ni.getName().startsWith("eth")) {
                byte[] macAddressBytes = ni.getHardwareAddress();
                if (null != macAddressBytes) {
                    StringBuilder sb1 = new StringBuilder();
                    for (byte mab : macAddressBytes) {
                        sb1.append(String.format("%02X:", mab));
                    }
                    if (sb1.length() > 0) {
                        sb1.deleteCharAt(sb1.length() - 1);
                    }
                    return sb1.toString();
                }
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return "02:10:00:00:00:00";
}

执行结果:
代码方式获取mac地址
Android系统中标识唯一性,可以采用MAC地址方式来区分的。