获取android一体机的Mac地址

引言

最近在做一个医院专家介绍的网页展示,说起来没什么难度。很简单的一个东西,但是有一点把我恶心到了,前端给我的ip地址中需要拼接mac地址。本以为没什么难度,可以还是被坑了一把。

获取Mac

本来一开始,也没觉得是回事。无外乎就是获取mac,照着很多人通俗的做法就是使用wifiManager这个方法。

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mac = wifiManager.getConnectionInfo().getMacAddress();

很简单就两句话,但是需要注意的一点是getSystemService()这个方法。在android studio2.3以后一定要在这个方法前添加getApplicationContext()这个方法,否则编译可以成功运动,但是打包Apk的时候就会报错。
好了接下来说一下我的问题,这个方法虽然说可以获取到mac倒是必须是在连接wifi的前提下才可以,不然的话就会报null。然而,我这里做的android盒子程序是要装的盒子上的,可是这个盒子又不能连wifi。简而言之就是只能插网线,这下完蛋了。这个方法不能用,该怎么办呢?看来只能另寻出路。有句老话说,有事请Google。这里也不说废话了直接上代码。

Process ppyx = null;
        try {
            ppyx = Runtime.getRuntime().exec("cat /sys/class/net/eth0/address ");
        } catch (IOException e) {
            e.printStackTrace();
        }
        InputStreamReader ir = new InputStreamReader(ppyx.getInputStream());
        LineNumberReader input = new LineNumberReader(ir);

        for (; null != str;) {
            try {
                str = input.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (str != null) {
                mac = str.trim();// 去空格
                break;
            }
        }

通过上面的方法就可以完美的解决我的问题了。这个方法是获取系统的文件下面有个文件里的保存的mac地址,其中的/sys/class/net/eth0/address是默认路径(不同的机器可能会不同,可以从目前的情况来看,并没有什么不同)。很简单的几句话,也没什么好解释的。(还有此方法获取的mac和wifi获取的mac是不一样的,因为这是两个mac,希望大家不要纠结为什么这两个mac不一样)

总结

再简单的东西,也不能轻视。最后坑的只能是自己……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值