为给用户提供更严格的数据保护,从 Android 6.0 (Marshmallow) 版本开始,对于使用 WLAN API 和 Bluetooth API 的应用,Android 移除了对设备本地硬件标识符的编程访问权。WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法现在会返回常量值 02:00:00:00:00:00。
现在,要通过蓝牙和 WLAN 扫描访问附近外部设备的硬件标识符,您的应用必须拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。
refer Android 6.0 变更
注意:不要傻傻的以为添加了 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限就能访问自己应用所在手机的MAC地址了,上面说的是扫描附近别的设备的硬件标识符。
目前的可替代方案
public String getMacAddr() { try { List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface nif : all) { if (!nif.getName().equalsIgnoreCase("wlan0")) continue; byte[] macBytes = nif.getHardwareAddress(); if (macBytes == null) { return ""; } StringBuilder res = new StringBuilder(); for (byte b : macBytes) { res.append(String.format("%02X:",b)); } if (res.length() > 0) { res.deleteCharAt(res.length() - 1); } return res.toString(); } } catch (Exception ex) { Log.w("MacAddr", "exception during retrieving MAC address: " + ex.getMessage()); } return "02:00:00:00:00:00"; }
该方案可行的条件是保证WLAN(WiFi)处于开启状态,能不能访问网络不是必要条件。
refer Android 6.0 - You CAN NO longer access the Mac-Address? You can !
相关推荐
在jni中获取android 设备的mac地址
有些软件还要根据Mac地址来判定当前用户以前是否登录过。下面将一一介绍获取这些手机状态信息的方法。 1 通过build获取手机硬件信息 运用反射获取Build信息,然后从build中得到对应字段的值。这种情况适用于获取...
Android 6.0的手机无法通过低版本的Mac地址获取方式获取Mac地址,可以通过读取节点进行获取"/sys/class/net/wlan0/address",具体参考http://blog.csdn.net/zhangvalue/article/details/78220825,亲测通过
Android获取Mac地址
Android获取手机ip地址及mac地址
Android中打开APP软件获取手机IP和MAC地址
Android获取本地Wifi的Mac地址[实测MIUI Android8.1]
android 获取mac地址源码,用于向服务器发消息,详细描述client端
Android设备安装此apk之后,运行就可以看到设备的ID和Mac地址。
判断网络是否可用: 注意!是判断网络是否可用,但网络可用不代表一定能上外网的! public static boolean isNetworkAvailable(Context context) { ConnectivityManager manager = (ConnectivityManager) context...
基于Android10.0的设备上,获取相应的MAC地址,手机IMEI号,手机号,手机MSISDN号,手机ICCID号,进行可行性验证,特别是MAC地址方面,在Android10.0前后的设备均进行相应的接口验证,保证其可用性。适合正在致力于...
最近由于项目需要MAC地址的记录,搞了一个通用的适配类,目前经过测试可以适配Android所有版本,我测试过的设备系统Android 4 5 6 7 7+都可以获取到,废话不多说直接上代码,简洁: 该类分为三类:Android6.0以下、...
如何使用Java代码获取Android移动终端Mac地址.zip
上一篇介绍了如何获取ethernet的MAC地址,对于厂商来讲,除了MAC号,还有一项数据也很重要,那就是机器序列号,它是机器出厂时确定的,也是主要标识,每台机器都不一样。 要想获取到序列号,必须要先知道序列号从哪里来,写...
以下方法能正确的获取android自带蓝牙的Mac地址: 1.添加net.vidageek:mirror:1.6.1 2.实现过程 本人也尝试过其他方法获取,比如从cat /sys/class/net/wlan0/address 或者/sys/class/net/eth0/address路径获取,该...
安卓获取系统的信息,安卓系统版本号,内核版本号,手机型号,wifiMac地址,蓝牙mac地址等
主要为大家详细介绍了Android手机获取Mac地址的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
jni获取Android设备MAC Address最完美解决方案。解压import即可。新版本可能不太试用了,请酌情下载