`
xuanzhui
  • 浏览: 202905 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android6及以上版本获取MAC地址

阅读更多

为给用户提供更严格的数据保护,从 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 !

 

 

 

 

分享到:
评论

相关推荐

    android jni获取 Mac地址

    在Android系统中,由于安全和隐私考虑,直接通过Java API获取MAC地址的权限受到了限制。因此,开发者有时需要通过JNI来绕过这些限制,直接访问底层系统接口。 首先,我们需要创建一个JNI函数,这个函数将在C/C++...

    Android获取Mac地址

    在Android 8.0(API级别26)及以上版本,Google引入了随机化Mac地址的功能,即使在开启Wi-Fi的情况下,设备也会在每次连接时生成一个临时的Mac地址。这种情况下,即使通过蓝牙获取的Mac地址也不再可靠。为了获取设备...

    android6.0及以上获取wifi MAC地址

    Android 6.0的手机无法通过低版本的Mac地址获取方式获取Mac地址,可以通过读取节点进行获取"/sys/class/net/wlan0/address",具体参考http://blog.csdn.net/zhangvalue/article/details/78220825,亲测通过

    Android获得设备状态信息、Mac地址、IP地址的方法

    有些软件还要根据Mac地址来判定当前用户以前是否登录过。下面将一一介绍获取这些手机状态信息的方法。 1 通过build获取手机硬件信息 运用反射获取Build信息,然后从build中得到对应字段的值。这种情况适用于获取...

    解决Android 6.0获取wifi Mac地址为02:00:00:00:00:00问题

    Android 6.0 获取 Wi-Fi Mac 地址为 02:00:00:00:00:00 问题解决方法 ...使用该方法可以解决 Android 6.0 获取 Wi-Fi Mac 地址为 02:00:00:00:00:00 问题,实现在 Android 6.0 及以上版本中获取 Wi-Fi Mac 地址。

    Android_获取手机IP和MAC地址

    获取MAC地址则相对复杂一些,因为Android在6.0及以上版本对MAC地址进行了隐私保护,不再允许直接获取。但在较低版本中,你可以通过以下方式获取: ```java public String getMacAddress() { try { List...

    jni获取Android设备MAC Address最完美解决方案

    本解决方案主要针对如何通过JNI在Android设备上获取MAC地址。 MAC地址(Media Access Control Address)是网络设备的物理地址,每个网络接口控制器都有一个唯一的MAC地址,用于标识网络上的设备。在Android系统中,...

    android 获取mac地址源码

    以下是对Android获取MAC地址源码的详细解析。 首先,我们需要了解在不同Android版本下的获取方法: 1. **Android 5.1 (API级别22)及更低版本**: 在这些早期版本中,可以通过`WifiManager`的`getMacAddress()`方法...

    Android获取本地Wifi的Mac地址[实测MIUI Android8.1]

    在Android 6.0及以上版本,可以请求`ACCESS_FINE_LOCATION`或`ACCESS_COARSE_LOCATION`权限,因为这两个权限间接允许访问Wi-Fi信息。然后通过以下步骤获取Mac地址: 1. 首先,需要导入相关库: ```java import java...

    Android获取手机ip地址及mac地址

    1. **权限**:获取MAC地址需要在AndroidManifest.xml中添加`ACCESS_WIFI_STATE`和`ACCESS_COARSE_LOCATION`权限,而从API 23(Android 6.0)开始,动态请求`ACCESS_FINE_LOCATION`权限才能获取MAC地址。 2. **API...

    如何使用Java代码获取Android移动终端Mac地址.zip

    由于隐私和安全原因,从Android 6.0(API级别23)开始,系统对此进行了限制,不再允许应用直接获取Mac地址。不过,仍有一些方法可以尝试获取Mac地址,尤其是在系统层面或具有特定权限的应用中。以下将详细介绍如何...

    适配android11及以上版本的 ijkplayer播放器so包

    在Android 11及以上版本中,由于系统权限和安全策略的变化,适配ijkplayer的so库成为开发者面临的重要任务。本知识点将详细介绍如何解决在Android 11上因ijkplayer播放器so包导致的视频播放问题。 一、Android 11的...

    Android开发获取手机Mac地址适配所有Android版本

    对于Android 6.0以下的版本(API级别22及更低),我们可以直接使用Google提供的公共方法来获取Mac地址,即通过`WifiManager`的`getConnectionInfo()`方法获取`WifiInfo`对象,然后调用`getMacAddress()`获取Mac地址...

    Android 移动端获取设备MAC Demo

    1. **Android权限**:在Android 6.0(API级别23)及以上版本,获取MAC地址需要申请`ACCESS_WIFI_STATE`权限。在AndroidManifest.xml文件中添加如下代码: ```xml &lt;uses-permission android:name="android....

    获取Android设备ID和Mac地址的apk

    Android设备安装此apk之后,运行就可以看到设备的ID和Mac地址。

    Android 获取蓝牙Mac地址的正确方法

    接下来,我们探讨如何在Android 6.0及以上版本中正确获取蓝牙设备的Mac地址: 1. **使用反射机制:** 由于系统对蓝牙Mac地址的隐藏,开发者可以尝试使用反射来访问隐藏的API。这需要导入`java.lang.reflect.Method...

    安卓获取手机系统内核wifi的mac地址等信息

    在安卓系统中,获取手机的各种信息是开发过程中常见的需求,特别是对于系统信息的获取,例如系统版本号、内核版本号、设备型号以及无线网络接口(如Wi-Fi和蓝牙)的MAC地址。以下是对这些知识点的详细解释: 1. **...

    Delphi 12 控件之 ios,android,mswindows获取设备唯一标识符和mac地址.rar

    Delphi 12 ios,android,mswindows获取设备唯一标识符和mac地址.rar Delphi 12 fmx 跨平台(Win,Android,IOS)获取设备唯一标识符 在IT行业中,跨平台开发是一项重要的技术,它允许开发者用一套代码库在多个操作系统...

    Android手机获取Mac地址的几种方法

    Android 手机获取 Mac 地址是 Android 开发中非常重要的一个话题,Mac 地址是每个网络设备唯一的标识符,获取 Mac 地址可以用于设备识别、网络管理等方面。本文将为大家介绍 Android 手机获取 Mac 地址的几种方法。 ...

Global site tag (gtag.js) - Google Analytics