蓝牙的权限
这里我们只简单的聊下蓝牙的扫描和连接,不牵扯到使用蓝牙扫描结果来推到物理位置
- 声明权限
>= Android 12
BLUETOOTH_SCAN
BLUETOOTH_CONNECT
这两个权限都是运行时权限
<= Android 11
BLUETOOTH
ACCESS_FINE_LOCATION
位置权限属于运行时权限
- 示例代码
fun requestPermissions(onSuccess: () -> Unit) {
this.onSuccessCallback = onSuccess
val missingPermissions = mutableListOf<String>()
// >= Android 12
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// 扫描权限
if (ContextCompat.checkSelfPermission(fragment.requireContext(), Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.BLUETOOTH_SCAN)
}
// 连接权限
if (ContextCompat.checkSelfPermission(fragment.requireContext(), Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.BLUETOOTH_CONNECT)
}
} else // >= Android 6.0
// 位置权限
if (ContextCompat.checkSelfPermission(fragment.requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION)
}
if (missingPermissions.isNotEmpty()) {
permissionLauncher.launch(missingPermissions.toTypedArray())
} else {
checkBluetoothSwitch()
}
}