summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-07-22 14:42:47 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-28 13:10:37 +0000
commit7515e249c5da337e87cb9542a086f1b03af7adc8 (patch)
treea3f07129c83b61901b7cfd9a104904fbda84760c
parent7267bff5d9d5f6868799566685bea35d068d5f57 (diff)
downloadqtlocation-7515e249c5da337e87cb9542a086f1b03af7adc8.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. Change-Id: I02f94402e6fe3f3eecf24526438a5c7ff06399b5 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit fceff8428479d1c7e5136b98368d9bd119f162a6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/plugins/position/android/src/CMakeLists.txt1
-rw-r--r--src/plugins/position/android/src/jnipositioning.cpp19
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;