BluetoothAdapter getAddress()返回02:00:00:00:00:00

时间:2020-05-28 14:29:29

标签: java android bluetooth mac-address

我尝试返回设备的Bluetooth mac地址,但这不起作用,并返回以下地址:02:00:00:00:00:00。

-我正在使用API​​级别28
-我可以在android系统设置中获取蓝牙mac地址,但无法在我的应用中以编程方式获取。
-我可以通过编程方式从其他设备获取此设备的mac地址。

我了解的是访问地址mac仅适用于系统应用程序,但是如果这是事实,为什么其他设备获取我的mac地址而不是我!

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
test.setText(adapter.getAdress());

我尝试了许多权限,但仍然存在相同的问题!

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS" />
<uses-permission android:name="android.permission.INTERNET" />

1 个答案:

答案 0 :(得分:1)

自Android 6起,棉花糖应用程序将无法再访问蓝牙硬件MAC地址。进行此更改是因为许多应用程序滥用了该地址来标识和跟踪智能手机。为避免现有应用程序损坏,getter方法仍然存在,但它返回一个虚拟地址。有关详细信息,请参见Android官方发行说明here

中的相应说明。

但是,MAC地址对其他设备的可见性如何?

  • 蓝牙低功耗(LE)不使用硬件MAC地址进行通信。它使用了它的随机变体(请参见here 有关详细信息)。由于即使用户明确禁用了蓝牙,蓝牙LE也不会在后台停止扫描附近的设备 相当可观;-)

  • 蓝牙经典不会随机化MAC地址。但是与蓝牙LE相比,用户可以至少轻松地完全禁用蓝牙。