summaryrefslogtreecommitdiff
path: root/examples/location/geojson_viewer/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/location/geojson_viewer/main.cpp')
-rw-r--r--examples/location/geojson_viewer/main.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/examples/location/geojson_viewer/main.cpp b/examples/location/geojson_viewer/main.cpp
index 436a8e16..f7bf28fe 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 <QtCore/private/qandroidextras_p.h>
+#endif
class extractor
{
@@ -247,16 +250,33 @@ public:
#include "main.moc"
+#ifdef Q_OS_ANDROID
+// Request permissions because we're using QStandardPaths::writableLocation()
+bool requestStoragePermissions()
+{
+ const auto permission = QtAndroidPrivate::Storage;
+ auto checkFuture = QtAndroidPrivate::checkPermission(permission);
+ if (checkFuture.result() == QtAndroidPrivate::Denied) {
+ auto requestFuture = QtAndroidPrivate::requestPermission(permission);
+ if (requestFuture.result() != QtAndroidPrivate::Authorized) {
+ 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);
- auto permission = QPermission::WriteStorage;
- if (QCoreApplication::requestPermission(permission).result() != QPermission::Authorized) {
- qWarning() << "Couldn't get 'WriteStorage' permission!";
+#ifdef Q_OS_ANDROID
+ if (!requestStoragePermissions())
return -1;
- }
+#endif
QQmlApplicationEngine engine;
QUrl absoluteFilePath = argc > 1 ?