在Android 12中,对蓝牙权限做出了新的更改。当应用程序启用BLE扫描器并在后台运行时,应用将需要请求'android.bluetooth.scan.permission.SCAN_THEN_CONNECT'权限。否则应用只能进行前台扫描。 为了请求'android.bluetooth.scan.permission.SCAN_THEN_CONNECT'权限,您需要在应用的清单文件中添加以下权限申请:
此外,您还需要通过以下代码请求BLE扫描的权限:
private fun requestBluetoothScanPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && applicationContext.checkSelfPermission(Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { requestPermissions(arrayOf(Manifest.permission.BLUETOOTH_CONNECT), REQUEST_BLUETOOTH_SCAN_PERMISSION_CODE) } }
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array
if (requestCode == REQUEST_BLUETOOTH_SCAN_PERMISSION_CODE
&& grantResults.isNotEmpty()
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted
} else {
// Permission denied
}
}
请注意,这个权限与之前的蓝牙权限不同。应用需要明确请求此新权限才能进行后台扫描。