BluetoothAdapter.getAddress() 获取到的地址是02:00:00:00:00:00
时间: 2023-10-23 20:10:11 浏览: 35
在某些情况下,BluetoothAdapter.getAddress()返回的确实是“02:00:00:00:00:00”。这是因为在Android 6.0及更高版本中,Google已经禁止应用程序获取设备的MAC地址,以保护用户的隐私。因此,如果您想要获取设备的唯一标识符,您可以考虑使用Android ID或者通过在应用程序中生成一个随机的UUID来实现。
相关问题
android8.1获取蓝牙地址,[蓝牙] Android 8.1 获取蓝牙设备地址无效;02:00:00:00:00:00
从Android 6.0开始,Google引入了一项安全功能,即对于非系统应用程序,无法直接访问设备的MAC地址。因此,在Android 8.1及更高版本中,获取蓝牙设备MAC地址的方法已经失效。
不过,您可以通过BluetoothAdapter对象的getAddress()方法来获取蓝牙设备的地址。但是,这个方法只能在Android 6.0及以下版本中使用。在Android 7.0及以上版本中,该方法将返回固定的值“02:00:00:00:00:00”。
如需在Android 8.1及更高版本中获取蓝牙设备地址,您可以通过以下方法:
1. 在AndroidManifest.xml文件中添加权限:
```
<uses-permission android:name="android.permission.BLUETOOTH"/>
```
2. 通过BluetoothAdapter.getDefaultAdapter()方法获取BluetoothAdapter对象。
3. 通过BluetoothAdapter对象的getBluetoothLeAdvertiser()方法获取BluetoothLeAdvertiser对象。
4. 通过BluetoothLeAdvertiser对象的getOwnAddress()方法获取自身蓝牙地址。
示例代码如下:
```
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothLeAdvertiser bluetoothLeAdvertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
String macAddress = bluetoothLeAdvertiser.getOwnAddress();
```
请注意,该方法仅适用于支持BLE功能的设备。对于不支持BLE功能的设备,您可以考虑使用其他方法来获取蓝牙设备地址。
public void onAccepted(BluetoothSocket socket) { btManager = new BluetoothManager(socket); btManager.setServer(true); btManager.setOnReceivedListener(onReceivedListener); btManager.setOnEventListener(onEventListener); Toast.makeText(MainActivity.this,"收到一个蓝牙连接!",Toast.LENGTH_LONG).show(); setTitle("蓝牙连接到:" + btManager.getRemoteName()); if(bluetoothAddress == null){ BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); bluetoothAddress = bluetoothAdapter.getAddress(); } refreshData(); } };
这是实现了BluetoothServer.OnAcceptListener接口的onAccepted方法,当蓝牙连接被接受时,会执行该方法。在该方法内部,创建了一个BluetoothManager对象,并将socket传入进行初始化。接着设置了BluetoothManager的一些属性,比如设置为服务器端、设置数据接收监听器和事件监听器。然后显示一个Toast提示信息和设置标题。最后,如果bluetoothAddress为null,获取本地蓝牙适配器的地址并赋值给bluetoothAddress,最后调用了一个refreshData()方法。