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