Android获取设备有线网卡、无线网卡的MAC地址

本文介绍了如何在Linux系统中通过运行shell命令获取eth0和wlan0设备的MAC地址,展示了`runExe()`方法执行cat命令并处理输出的过程。

#核心点#

cat /sys/class/net/eth0/address
cat /sys/class/net/wlan0/address

Linux系统是规范化的,需要的东西一定会查找到具体的文件

通过运行shell命令的方式查找设备的MAC地址,通用性强、简洁易懂

    protected String getMac() {

        String mac = "";
        String command1 = "cat /sys/class/net/eth0/address";
        String command2 = "cat /sys/class/net/wlan0/address";
        mac = runExe(command1);
        Log.i("dd",mac);
        if(mac.isEmpty()) {
            mac=runExe(command2);
        }
        return mac;
    }

    public String runExe(String command) {
        Runtime mRuntime = Runtime.getRuntime();
        String result = "";
        try {
            Process mProcess = mRuntime.exec(command);
            BufferedReader mReader = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
            StringBuffer mRespBuff = new StringBuffer();

            char[] buff = new char[1024];
            int ch = 0;
            while ((ch = mReader.read(buff)) != -1) {
                mRespBuff.append(buff, 0, ch);
            }
            mReader.close();
            result = mRespBuff.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

Linux 系统中,查看无线网卡MAC 地址可以通过多种方式实现。最常见的方式是通过系统文件接口或命令行工具进行查询。 ### 通过系统文件查看无线网卡 MAC 地址 Linux 系统会将网络接口的硬件地址信息存储在 `/sys/class/net/<interface>/address` 文件中。对于无线网卡,接口名称通常为 `wlan0` 或类似名称。可以通过读该文件获取 MAC 地址: ```bash cat /sys/class/net/wlan0/address ``` 此方法直接从内核提供的虚拟文件系统中提 MAC 地址,适用于大多数现代 Linux 发行版[^2]。 ### 使用命令行工具查看无线网卡 MAC 地址 如果系统中安装了 `net-tools` 软件包,可以使用 `ifconfig` 命令查看无线网卡的信息: ```bash ifconfig wlan0 ``` 在输出信息中,`HWaddr` 后面的字段即为该无线网卡MAC 地址。需要注意的是,`ifconfig` 在某些新版本的 Linux 发行版中已被弃用,推荐使用 `ip` 命令替代: ```bash ip link show wlan0 ``` 在输出中,`link/ether` 后面的字段表示 MAC 地址。 ### 更改无线网卡 MAC 地址的方法 如果需要更改无线网卡MAC 地址,可以在使用 `ip` 或 `ifconfig` 工具前先将接口关闭,再设置新的 MAC 地址。例如,使用 `ip` 命令更改 MAC 地址的步骤如下: ```bash ip link set wlan0 down ip link set wlan0 address 00:11:22:33:44:55 ip link set wlan0 up ``` 此方法适用于临时更改 MAC 地址的需求。需要注意的是,更改 MAC 地址可能受到网络管理工具(如 NetworkManager)的限制,在某些系统中需要额外配置持久化规则[^3]。 ### 通过编程方式获取无线网卡 MAC 地址 在某些场景下,例如开发 Android 应用或嵌入式系统程序时,可以通过执行 Shell 命令获取 MAC 地址。以下是一个通用的 Java 示例代码片段,用于执行命令并获取返回值: ```java protected String getMac() { String mac = ""; String command1 = "cat /sys/class/net/eth0/address"; String command2 = "cat /sys/class/net/wlan0/address"; mac = runExe(command1); if (mac.isEmpty()) { mac = runExe(command2); } return mac; } public String runExe(String command) { Runtime mRuntime = Runtime.getRuntime(); String result = ""; try { Process mProcess = mRuntime.exec(command); BufferedReader mReader = new BufferedReader(new InputStreamReader(mProcess.getInputStream())); StringBuffer mRespBuff = new StringBuffer(); char[] buff = new char[1024]; int ch = 0; while ((ch = mReader.read(buff)) != -1) { mRespBuff.append(buff, 0, ch); } mReader.close(); result = mRespBuff.toString(); } catch (IOException e) { e.printStackTrace(); } return result; } ``` 该方法适用于需要通过程序动态获取 MAC 地址的场景,尤其适合于 Android 系统中获取有线或无线网卡MAC 地址[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值