Android 开发问题:bluetoothLeScanner.startScan(scanCallback); 扫描不到设备
·
bluetoothLeScanner.startScan(scanCallback);
- 在 Android 开发中,调用上述方法,扫描不到设备
问题原因
- 可能是蓝牙未开启或缺少权限
处理策略
-
检查设备蓝牙是否实际已开启,可调用
bluetoothAdapter.isEnabled()验证 -
检查权限声明,需要如下权限,不需要动态申请
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
- 从
Android 6.0开始,还需要位置权限,需要动态申请
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- 从
Android 12+开始,需要还如下新增权限,需要动态申请
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
- 从
Android 12+开始,如果在<uses-permission>标签中明确声明android:usesPermissionFlags="neverForLocation,那么可以不需要位置权限
<uses-permission
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation" />
更多推荐

所有评论(0)