Android蓝牙MAC得到的是02:00:00:00:00:00

Android bluetooth MAC obtained is 02:00:00:00:00:00

正在尝试使用

获取 android phone 的蓝牙
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String bleMAC = bluetoothAdapter.getAddress();

函数的结果是 02:00:00:00:00:00,我期待 00:04 的行: 61:02:AA:FF

还注意到 wifi mac 地址与蓝牙 mac 地址相同。 wifiMAC地址可以用吗?

根据 Android 6.0 更改:

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

为了向用户提供更好的数据保护,从本版本开始,Android 删除了使用 Wi-Fi 和蓝牙 API 的应用对设备本地硬件标识符的编程访问。 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法现在 return 为 02:00:00:00:00:00.

的常量值

要通过蓝牙和 Wi-Fi 扫描访问附近外部设备的硬件标识符,您的应用现在必须具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。

根据 Android 文档 WifiInfo API,Android 应用必须是系统应用并获得以下 2 个权限:

  • android.Manifest.permission.LOCAL_MAC_ADDRESS
  • Manifest.permission.ACCESS_FINE_LOCATION

我在 Android10 的 root 设备上试过,效果很好。