diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-02-21 23:45:58 +0200 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-02-24 12:12:43 +0200 |
commit | d983c7edac94b5e397b781b3f7a9b119d1996318 (patch) | |
tree | 1e804f5c5914bd94cc0412e10f6d2b9b9cb57db8 | |
parent | 47391b2d74f65ea3a3a67c0a5359499582d6cfdb (diff) | |
download | qtlocation-d983c7edac94b5e397b781b3f7a9b119d1996318.tar.gz |
Examples: request permissions storage permissions on Android
Since QStandardPaths::writableLocation() is used, it's best
to make sure we have to write permissions on Android.
Task-number: QTBUG-80717
Change-Id: I992661aed25e7d40254f7c7d6373273cf84aac16
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r-- | examples/location/geojson_viewer/geojson_viewer.pro | 2 | ||||
-rw-r--r-- | examples/location/geojson_viewer/main.cpp | 23 |
2 files changed, 25 insertions, 0 deletions
diff --git a/examples/location/geojson_viewer/geojson_viewer.pro b/examples/location/geojson_viewer/geojson_viewer.pro index cf261b36..08b28144 100644 --- a/examples/location/geojson_viewer/geojson_viewer.pro +++ b/examples/location/geojson_viewer/geojson_viewer.pro @@ -2,6 +2,8 @@ TARGET = qml_location_geojsonviewer TEMPLATE = app QT += core qml network quick positioning location-private widgets +android: QT += androidextras + SOURCES += main.cpp CONFIG += c++11 CONFIG += install_ok diff --git a/examples/location/geojson_viewer/main.cpp b/examples/location/geojson_viewer/main.cpp index 996c0925..61f7d233 100644 --- a/examples/location/geojson_viewer/main.cpp +++ b/examples/location/geojson_viewer/main.cpp @@ -70,6 +70,9 @@ #include <QJsonArray> #include <QFileInfo> #include <QtCore/qobjectdefs.h> +#ifdef Q_OS_ANDROID +#include <QtAndroid> +#endif class extractor { @@ -247,10 +250,30 @@ public: #include "main.moc" +#ifdef Q_OS_ANDROID +// Request permissions because we're using QStandardPaths::writableLocation() +bool requestStoragePermissions() { + using namespace QtAndroid; + + QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); + const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); + if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + + return true; +} +#endif + int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication app(argc, argv); +#ifdef Q_OS_ANDROID + if (!requestStoragePermissions()) + return -1; +#endif QQmlApplicationEngine engine; QUrl absoluteFilePath = argc > 1 ? |