diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2021-07-22 14:42:47 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2021-07-28 14:07:53 +0200 |
commit | fceff8428479d1c7e5136b98368d9bd119f162a6 (patch) | |
tree | e81d0ae80432b3fc7f21f425c1425bbf010c3cba /src/plugins | |
parent | 1efdfa7e810e7eb86b2cde3151a6291666dc3e35 (diff) | |
download | qtlocation-fceff8428479d1c7e5136b98368d9bd119f162a6.tar.gz |
Use private permission API on Android
The public permission API is being postponed until 6.3, for now,
we can use the private API.
Pick-to: 6.2
Change-Id: I02f94402e6fe3f3eecf24526438a5c7ff06399b5
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/position/android/src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/plugins/position/android/src/jnipositioning.cpp | 19 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/plugins/position/android/src/CMakeLists.txt b/src/plugins/position/android/src/CMakeLists.txt index da863cdc..ed7d4b73 100644 --- a/src/plugins/position/android/src/CMakeLists.txt +++ b/src/plugins/position/android/src/CMakeLists.txt @@ -14,6 +14,7 @@ qt_internal_add_plugin(QGeoPositionInfoSourceFactoryAndroid qgeosatelliteinfosource_android.cpp qgeosatelliteinfosource_android_p.h PUBLIC_LIBRARIES Qt::Core + Qt::CorePrivate Qt::Positioning ) diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp index cf89fe20..5f87d08b 100644 --- a/src/plugins/position/android/src/jnipositioning.cpp +++ b/src/plugins/position/android/src/jnipositioning.cpp @@ -43,6 +43,7 @@ #include <QGeoPositionInfo> #include <QJniEnvironment> #include <QJniObject> +#include <QtCore/private/qandroidextras_p.h> #include <QCoreApplication> #include <android/log.h> #include "qgeopositioninfosource_android_p.h" @@ -547,23 +548,23 @@ namespace AndroidPositioning { // We can only check if we have the needed permissions. Also make sure // to request the background location permissions. if (!QNativeInterface::QAndroidApplication::isActivityContext()) { - const auto permission = QPermission::PreciseBackgroundLocation; - const auto result = QCoreApplication::checkPermission(permission).result(); - if (result != QPermission::Authorized) { + const auto permission = QtAndroidPrivate::PreciseBackgroundLocation; + const auto result = QtAndroidPrivate::checkPermission(permission).result(); + if (result != QtAndroidPrivate::Authorized) { qCWarning(lcPositioning) << "Position data not available due to missing permission" << permission; } - return result == QPermission::Authorized; + return result == QtAndroidPrivate::Authorized; } else { // Running from a normal Activity. Checking and requesting the // permissions if necessary. // Android v23+ requires runtime permission check and requests - const auto permission = QPermission::PreciseLocation; - auto checkFuture = QCoreApplication::checkPermission(permission); - if (checkFuture.result() == QPermission::Denied) { - auto requestFuture = QCoreApplication::requestPermission(permission); - if (requestFuture.result() != QPermission::Authorized) { + const auto permission = QtAndroidPrivate::PreciseLocation; + auto checkFuture = QtAndroidPrivate::checkPermission(permission); + if (checkFuture.result() == QtAndroidPrivate::Denied) { + auto requestFuture = QtAndroidPrivate::requestPermission(permission); + if (requestFuture.result() != QtAndroidPrivate::Authorized) { qCWarning(lcPositioning) << "Position data not available due to missing permission" << permission; |