diff options
Diffstat (limited to 'src/bluetooth/android/androidutils.cpp')
-rw-r--r-- | src/bluetooth/android/androidutils.cpp | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/src/bluetooth/android/androidutils.cpp b/src/bluetooth/android/androidutils.cpp index 7c99bad3..22160ab7 100644 --- a/src/bluetooth/android/androidutils.cpp +++ b/src/bluetooth/android/androidutils.cpp @@ -4,40 +4,24 @@ #include "androidutils_p.h" #include "jni_android_p.h" -#include <QtCore/QLoggingCategory> +#include <QtCore/qcoreapplication.h> +#include <QtCore/qloggingcategory.h> #include <QtCore/private/qandroidextras_p.h> QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(QT_BT_ANDROID) -static QString androidPermissionString(BluetoothPermission permission) +bool ensureAndroidPermission(QBluetoothPermission::CommunicationModes modes) { - switch (permission) { - case BluetoothPermission::Scan: - return {QStringLiteral("android.permission.BLUETOOTH_SCAN")}; - case BluetoothPermission::Advertise: - return {QStringLiteral("android.permission.BLUETOOTH_ADVERTISE")}; - case BluetoothPermission::Connect: - return {QStringLiteral("android.permission.BLUETOOTH_CONNECT")}; - } - return {}; -} - -bool ensureAndroidPermission(BluetoothPermission permission) -{ - // The current set of permissions are only applicable with 31+ - if (QNativeInterface::QAndroidApplication::sdkVersion() < 31) - return true; - - const auto permString = androidPermissionString(permission); + QBluetoothPermission permission; + permission.setCommunicationModes(modes); - // First check if we have the permission already - if (QtAndroidPrivate::checkPermission(permString).result() == QtAndroidPrivate::Authorized) + if (qApp->checkPermission(permission) == Qt::PermissionStatus::Granted) return true; - qCWarning(QT_BT_ANDROID) << "Permission not authorized:" << permString; - return false; + qCWarning(QT_BT_ANDROID) << "Permissions not authorized for a specified mode:" << modes; + return false; } QJniObject getDefaultBluetoothAdapter() |