summaryrefslogtreecommitdiff
path: root/src/bluetooth/android/androidutils.cpp
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2023-04-05 17:30:03 +0200
committerIvan Solovev <ivan.solovev@qt.io>2023-05-03 12:08:47 +0200
commit06d37147d1b59ca8cb5ce526a96b4ba59e44e0fa (patch)
tree43376a1bf65816df1455d3505e73925bad3dd177 /src/bluetooth/android/androidutils.cpp
parenta75d7fac5b555271902e02d63b4c4fb32cf4c008 (diff)
downloadqtconnectivity-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.cpp32
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()