diff options
Diffstat (limited to 'examples/location/geojson_viewer/main.cpp')
-rw-r--r-- | examples/location/geojson_viewer/main.cpp | 23 |
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 ? |