android获取mac地址
16lz
2021-12-04
【Android】获取Mac地址【1】
(1) 调用android 的API: NetworkInterface. getHardwareAddress ()
该API的level为9,只有android 2.3以上才有该接口
(2) 调用java 的方法: nbtstat/arp
一般android不支持这两个命令
(3) 调用Android的API: WifiManager
权限:
1 | |
代码:
1 2 3 4 5 | WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); |
这个是设备开通Wifi连接,获取到网卡的MAC地址
(4) 调用Linux的busybox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | /* ***************************************************************** * 子函数:获得本地MAC地址 ***************************************************************** */ public String getMacAddress(){ String result = "" ; String Mac = "" ; result = callCmd( "busybox ifconfig" , "HWaddr" ); //如果返回的result == null,则说明网络不可取 if (result== null ){ return "网络出错,请检查网络" ; } //对该行数据进行解析 //例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67 if (result.length()> 0 && result.contains( "HWaddr" )== true ){ Mac = result.substring(result.indexOf( "HWaddr" )+ 6 , result.length()- 1 ); Log.i( "test" , "Mac:" +Mac+ " Mac.length: " +Mac.length()); if (Mac.length()> 1 ){ Mac = Mac.replaceAll( " " , "" ); result = "" ; String[] tmp = Mac.split( ":" ); for ( int i = 0 ;i |
这个需要设备支持busybox工具
(5)查询记录了MAC地址的文件“/proc/net/arp”
需要有这个文件,并且记录了相应的内容
更多相关文章
- 详解 Android(安卓)的 Activity 组件
- [Android(安卓)与 js 简单互调
- Unity与Android(安卓)Studio✨之间那些不清不楚的小秘密✨(Androi
- Unity3D 调用Android的提供的接口
- 【安全】Android(安卓)O 中的 Seccomp 过滤器
- Unity3D 调用Android的提供的接口
- android:id="@+id/title"、android:id="@android:id/title"、and
- Android工作笔记:Android路径大全
- android android API Level