如何通过编程获取Android配对设备的蓝牙MAC地址?
获取Android已配对蓝牙设备的MAC地址
嘿,你遇到的无法解析符号address错误原因很直白——你代码里用的address变量根本没定义呀!而且更关键的是,getRemoteDevice(address)这个方法的作用是根据已知的MAC地址获取对应的蓝牙设备对象,不是用来获取已配对设备列表的。
要获取和你的Android设备配对过的蓝牙设备MAC地址,正确的做法是先获取已绑定(配对)的设备集合,再遍历集合提取每个设备的MAC地址,具体步骤如下:
步骤1:获取蓝牙适配器并检查蓝牙状态
首先要获取BluetoothAdapter实例,同时确保蓝牙处于开启状态:
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter(); // 检查设备是否支持蓝牙,以及蓝牙是否开启 if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) { // 可提示用户开启蓝牙,或直接跳转到蓝牙设置页面 Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); return; }
步骤2:获取已配对设备列表并提取MAC地址
调用getBondedDevices()方法就能拿到所有已配对的蓝牙设备集合,遍历这个集合后,用getAddress()就能获取每个设备的MAC地址:
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); if (!pairedDevices.isEmpty()) { // 遍历所有已配对设备 for (BluetoothDevice device : pairedDevices) { String deviceName = device.getName(); String deviceMacAddress = device.getAddress(); // 这就是你需要的MAC地址 // 可将信息存储或打印查看 Log.d("BluetoothInfo", "设备名称: " + deviceName + " | MAC地址: " + deviceMacAddress); } } else { Log.d("BluetoothInfo", "当前没有已配对的蓝牙设备"); }
权限注意事项
别忘了在AndroidManifest.xml里声明必要权限:
- Android 12及以下:添加
<uses-permission android:name="android.permission.BLUETOOTH" />和<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> - Android 13及以上:需要添加
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />,且该权限需要动态申请
补充说明
如果你确实需要用到getRemoteDevice(address),那得先有一个已知的MAC地址字符串(比如从已配对设备列表中拿到的),示例如下:
String knownMacAddress = "AA:BB:CC:DD:EE:FF"; BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(knownMacAddress);
但这是在你已经知晓MAC地址的场景下才会用到的方法,不是用来获取配对设备的方式哦~
内容的提问来源于stack exchange,提问作者Nunna Yobusiness




