summaryrefslogtreecommitdiffstats
path: root/examples/demos/photosurface/main.cpp
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2020-02-23 12:43:12 +0200
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2020-02-26 16:31:36 +0200
commit49591c453fea8bb7f1f80d815496aa57620add53 (patch)
tree395b4491572893e0a7e630b827527a0173ff6757 /examples/demos/photosurface/main.cpp
parentea11d049ab497bbaa78a2cecbc0f028433847058 (diff)
Demos: request Android storage permissions when using QStandardPaths
http example uses QStandardPaths, on Android permissions might need to be explicitly requested to write the downloaded file. Task-number: QTBUG-80717 Change-Id: Id01c0486656a33caac74e2a31a7b7d9c83df28a1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'examples/demos/photosurface/main.cpp')
-rw-r--r--examples/demos/photosurface/main.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/examples/demos/photosurface/main.cpp b/examples/demos/photosurface/main.cpp
index d1522bd09..f4aadfd50 100644
--- a/examples/demos/photosurface/main.cpp
+++ b/examples/demos/photosurface/main.cpp
@@ -64,6 +64,22 @@
#include <QtCore/QMimeDatabase>
#include <QtCore/QStandardPaths>
#include <QtCore/QUrl>
+#ifdef REQUEST_PERMISSIONS_ON_ANDROID
+#include <QtAndroid>
+
+bool requestStoragePermission() {
+ 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
static QStringList imageNameFilters()
{
@@ -88,6 +104,10 @@ int main(int argc, char* argv[])
#else
QGuiApplication app(argc, argv);
#endif
+#ifdef REQUEST_PERMISSIONS_ON_ANDROID
+ if (!requestStoragePermission())
+ return -1;
+#endif
QQuickWindow::setDefaultAlphaBuffer(true);
QCoreApplication::setApplicationName(QStringLiteral("Photosurface"));