蓝牙的权限

5 阅读1分钟
蓝牙的权限

这里我们只简单的聊下蓝牙的扫描和连接,不牵扯到使用蓝牙扫描结果来推到物理位置

  1. 声明权限
>= Android 12

BLUETOOTH_SCAN
BLUETOOTH_CONNECT

这两个权限都是运行时权限
<= Android 11

BLUETOOTH

ACCESS_FINE_LOCATION

位置权限属于运行时权限
  1. 示例代码
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()
    }

}