summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-03-24 03:00:17 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-03-24 03:00:18 +0100
commitd0b7c165ced02f20f0da3b66854f4bec7b192e64 (patch)
treebad71bcde3ec22df1e04a4cffb8d776f3c48977f
parent65092d3d371f53c202337d6cfc583f9fd24e5b8b (diff)
parent54666d4b42cc212ad1639a058e90ad1f17eed898 (diff)
Merge remote-tracking branch 'origin/5.11' into dev
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp30
-rw-r--r--src/bluetooth/qbluetoothsocket.cpp2
-rw-r--r--src/bluetooth/qbluetoothsocket.h4
-rw-r--r--src/bluetooth/qlowenergycontroller.cpp3
4 files changed, 26 insertions, 13 deletions
diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
index 303dd67f..c7afd578 100644
--- a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
+++ b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
@@ -147,23 +147,33 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
}
// check Android v23+ permissions
- // -> BTLE search requires android.permission.ACCESS_COARSE_LOCATION
+ // -> BTLE search requires android.permission.ACCESS_COARSE_LOCATION or android.permission.ACCESS_FINE_LOCATION
if (requestedMethods & QBluetoothDeviceDiscoveryAgent::LowEnergyMethod
&& QtAndroid::androidSdkVersion() >= 23)
{
- QString permission(QLatin1String("android.permission.ACCESS_COARSE_LOCATION"));
+ const QString coarsePermission(QLatin1String("android.permission.ACCESS_COARSE_LOCATION"));
+ const QString finePermission(QLatin1String("android.permission.ACCESS_FINE_LOCATION"));
// do we have required permission already, if so nothing to do
- if (QtAndroidPrivate::checkPermission(permission) == QtAndroidPrivate::PermissionsResult::Denied) {
- qCWarning(QT_BT_ANDROID) << "Requesting ACCESS_COARSE_LOCATION permission";
+ if (QtAndroidPrivate::checkPermission(coarsePermission) == QtAndroidPrivate::PermissionsResult::Denied
+ && QtAndroidPrivate::checkPermission(finePermission) == QtAndroidPrivate::PermissionsResult::Denied) {
+ qCWarning(QT_BT_ANDROID) << "Requesting ACCESS_*_LOCATION permission";
QAndroidJniEnvironment env;
const QHash<QString, QtAndroidPrivate::PermissionsResult> results =
- QtAndroidPrivate::requestPermissionsSync(env, QStringList() << permission);
- if (!results.contains(permission)
- || results[permission] == QtAndroidPrivate::PermissionsResult::Denied)
- {
- qCWarning(QT_BT_ANDROID) << "Search not possible due to missing permission (ACCESS_COARSE_LOCATION)";
+ QtAndroidPrivate::requestPermissionsSync(env, QStringList() << coarsePermission << finePermission);
+
+ bool permissionReceived = false;
+ for (const QString &permission: results.keys()) {
+ qCDebug(QT_BT_ANDROID) << permission << (results[permission] == QtAndroidPrivate::PermissionsResult::Denied);
+ if ((permission == coarsePermission || permission == finePermission)
+ && results[permission] == QtAndroidPrivate::PermissionsResult::Granted) {
+ permissionReceived = true;
+ break;
+ }
+ }
+ if (!permissionReceived) {
+ qCWarning(QT_BT_ANDROID) << "Search not possible due to missing permission (ACCESS_COARSE|FINE_LOCATION)";
lastError = QBluetoothDeviceDiscoveryAgent::UnknownError;
errorString = QBluetoothDeviceDiscoveryAgent::tr("Missing Location permission. Search is not possible.");
emit q->error(lastError);
@@ -171,7 +181,7 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
}
}
- qCWarning(QT_BT_ANDROID) << "ACCESS_COARSE_LOCATION permission available";
+ qCWarning(QT_BT_ANDROID) << "ACCESS_COARSE|FINE_LOCATION permission available";
}
// install Java BroadcastReceiver
diff --git a/src/bluetooth/qbluetoothsocket.cpp b/src/bluetooth/qbluetoothsocket.cpp
index ddc6469f..c5b0f7d3 100644
--- a/src/bluetooth/qbluetoothsocket.cpp
+++ b/src/bluetooth/qbluetoothsocket.cpp
@@ -387,7 +387,7 @@ void QBluetoothSocket::connectToService(const QBluetoothServiceInfo &service, Op
}
/*!
- \fn void QBluetoothSocket::connectToService(const QBluetoothAddress &address, QBluetoothUuid::ServiceClassUuid uuid, OpenMode openMode = ReadWrite)
+ \fn void QBluetoothSocket::connectToService(const QBluetoothAddress &address, QBluetoothUuid::ServiceClassUuid uuid, OpenMode mode = ReadWrite)
\internal
diff --git a/src/bluetooth/qbluetoothsocket.h b/src/bluetooth/qbluetoothsocket.h
index db8562ed..a7f43170 100644
--- a/src/bluetooth/qbluetoothsocket.h
+++ b/src/bluetooth/qbluetoothsocket.h
@@ -107,9 +107,9 @@ public:
void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, OpenMode openMode = ReadWrite);
void connectToService(const QBluetoothAddress &address, quint16 port, OpenMode openMode = ReadWrite);
inline void connectToService(const QBluetoothAddress &address, QBluetoothUuid::ServiceClassUuid uuid,
- OpenMode openMode = ReadWrite)
+ OpenMode mode = ReadWrite)
{
- connectToService(address, QBluetoothUuid(uuid), openMode);
+ connectToService(address, QBluetoothUuid(uuid), mode);
}
void disconnectFromService();
diff --git a/src/bluetooth/qlowenergycontroller.cpp b/src/bluetooth/qlowenergycontroller.cpp
index caa6c3fa..a23955ff 100644
--- a/src/bluetooth/qlowenergycontroller.cpp
+++ b/src/bluetooth/qlowenergycontroller.cpp
@@ -306,10 +306,13 @@ static QLowEnergyControllerPrivate *privateController(QLowEnergyController::Role
return new QLowEnergyControllerPrivateBluez();
}
#elif defined(QT_ANDROID_BLUETOOTH)
+ Q_UNUSED(role);
return new QLowEnergyControllerPrivateAndroid();
#elif defined(QT_WINRT_BLUETOOTH)
+ Q_UNUSED(role);
return new QLowEnergyControllerPrivateWinRT();
#else
+ Q_UNUSED(role);
return new QLowEnergyControllerPrivateCommon();
#endif
}