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.cpp23
1 files changed, 23 insertions, 0 deletions
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 ?