diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2023-04-05 17:30:03 +0200 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2023-05-03 12:08:47 +0200 |
commit | 06d37147d1b59ca8cb5ce526a96b4ba59e44e0fa (patch) | |
tree | 43376a1bf65816df1455d3505e73925bad3dd177 /src/bluetooth/android/androidutils.cpp | |
parent | a75d7fac5b555271902e02d63b4c4fb32cf4c008 (diff) | |
download | qtconnectivity-06d37147d1b59ca8cb5ce526a96b4ba59e44e0fa.tar.gz |
QtBluetooth: use public QPermission API to check for permissions on Android
Now when we have the fine-grained public QBluetoothPermission API, we
can use it to check for permissions in the Android implementation.
Adapt QtBluetooth examples to use only the minimal required set of
permissions.
As a drive-by: fix a couple of qCWarning() strings.
Task-number: QTBUG-109964
Change-Id: I55c67bcae27926e76bf9c1a8a9367af2b58883ff
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
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() |