- Qt 6.7
- Qt Core
- C++ Classes
- QBluetoothPermission
- Qt 6.7.3 Reference Documentation

# QBluetoothPermission Class

Access Bluetooth peripherals. More...

Header: | #include <QPermissions>
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: | QT += core
Since: | Qt 6.5

- List of all members, including inherited members

## Public Types

`(since 6.6)` enum | CommunicationMode { Access, Advertise, Default }
flags | CommunicationModes

## Public Functions

`(since 6.6)` QBluetoothPermission::CommunicationModes | communicationModes() const
`(since 6.6)` void | setCommunicationModes(QBluetoothPermission::CommunicationModes modes)

## Detailed Description

### Requirements

To request this permission at runtime, the following platform specific usage declarations have to be made at build time:

Platform | Type |
--- | --- | ---
Apple | Usage description | `NSBluetoothAlwaysUsageDescription`

Android

`uses-permission`

Up to Android 11 (API Level < 31):

- `android.permission.BLUETOOTH`
- `android.permission.ACCESS_FINE_LOCATION`

Starting from Android 12 (API Level >= 31):

- `android.permission.BLUETOOTH_ADVERTISE`
- `android.permission.BLUETOOTH_CONNECT`
- `android.permission.BLUETOOTH_SCAN`
- `android.permission.ACCESS_FINE_LOCATION`

Please see the individual usage declaration types for how to add them to your project.

Note: Currently on Android the `android.permission.ACCESS_FINE_LOCATION` permission is requested together with Bluetooth permissions. This is required for Bluetooth to work properly, unless the application provides a strong assertion in the application manifest that it does not use Bluetooth to derive a physical location. This permission coupling may change in future.

See also QPermission, QCoreApplication::requestPermission(), QCoreApplication::checkPermission(), and Application Permissions.

## Member Type Documentation

### `[since 6.6]` enum QBluetoothPermission::CommunicationMode
flags QBluetoothPermission::CommunicationModes

This enum is used to control the allowed Bluetooth communication modes.

Constant | Value | Description
--- | --- | ---
`QBluetoothPermission::Access` | `0x01` | Allow this device to access other Bluetooth devices. This includes scanning for nearby devices and connecting to them.
`QBluetoothPermission::Advertise` | `0x02` | Allow other Bluetooth devices to discover this device.
`QBluetoothPermission::Default` | `Access | Advertise` | This configuration is used by default.

Note: The fine-grained permissions are currently supported only on Android 12 and newer. On older Android versions, as well as on Apple operating systems, any mode results in full Bluetooth access.

Note: For now the `Access` mode on Android also requests the precise location permission. This permission coupling may change in the future.

This enum was introduced in Qt 6.6.

The CommunicationModes type is a typedef for QFlags<CommunicationMode>. It stores an OR combination of CommunicationMode values.

## Member Function Documentation

### `[since 6.6]` QBluetoothPermission::CommunicationModes QBluetoothPermission::communicationModes() const

Returns the allowed Bluetooth communication modes.

This function was introduced in Qt 6.6.

See also setCommunicationModes().

### `[since 6.6]` void QBluetoothPermission::setCommunicationModes(QBluetoothPermission::CommunicationModes modes)

Sets the allowed Bluetooth communication modes to modes.

Note: A default-constructed instance of CommunicationModes has no sense, so an attempt to set such a mode will raise a `qWarning()` and fall back to using the Default mode.

This function was introduced in Qt 6.6.

See also communicationModes().