Android获取Mac地址,支持android Q
16lz
2021-12-10
1、声明权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"> <uses-permission android:name="android.permission.INTERNET" />
2、调用代码
1) android 6.0以下可以通过获取wifi服务来获取Mac地址
/** * 获取wifi的mac地址,适配到android Q * @param paramContext * @return */public static String getMac(Context paramContext) {try {if (Build.VERSION.SDK_INT >= 23) {String str = getMacMoreThanM(paramContext);if (!TextUtils.isEmpty(str))return str;}// 6.0以下手机直接获取wifi的mac地址即可WifiManager wifiManager = (WifiManager)paramContext.getSystemService("wifi");WifiInfo wifiInfo = wifiManager.getConnectionInfo();if (wifiInfo != null)return wifiInfo.getMacAddress();} catch (Throwable throwable) {}return null;}
2)android 6.0+需要遍历网络接口来获取硬件地址,即mac地址
/** * android 6.0+获取wifi的mac地址 * @param paramContext * @return */private static String getMacMoreThanM(Context paramContext) {try {//获取本机器所有的网络接口Enumeration enumeration = NetworkInterface.getNetworkInterfaces();while (enumeration.hasMoreElements()) {NetworkInterface networkInterface = (NetworkInterface)enumeration.nextElement();//获取硬件地址,一般是MACbyte[] arrayOfByte = networkInterface.getHardwareAddress();if (arrayOfByte == null || arrayOfByte.length == 0) {continue;}StringBuilder stringBuilder = new StringBuilder();for (byte b : arrayOfByte) {//格式化为:两位十六进制加冒号的格式,若是不足两位,补0stringBuilder.append(String.format("%02X:", new Object[] { Byte.valueOf(b) }));}if (stringBuilder.length() > 0) {//删除后面多余的冒号stringBuilder.deleteCharAt(stringBuilder.length() - 1);}String str = stringBuilder.toString();// wlan0:无线网卡 eth0:以太网卡if (networkInterface.getName().equals("wlan0")) {return str;}}} catch (SocketException socketException) {return null;}return null;}
更多相关文章
- Android(安卓)获取屏幕高宽度,密度,通知栏高度,截图等常用方法
- Android(安卓)关于获取摄像头帧数据
- Android开发:Android快速开发不可或缺的11个工具类 (二)
- 获取应用签名
- Android(安卓)手机上获取物理唯一标识码
- Android查看网页源码与开启子线程
- Android-->获取所有联系人以及所有的字段(联系人头像,邮箱,地址,
- Android常用Manager
- 代码:android崩溃日志收集和处理