Examples: 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: Icd377254ad77cac661c5ae37e9081e0463493d8b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
This commit is contained in:
Assam Boudjelthia 2020-02-22 20:26:56 +02:00
parent bf377dd1af
commit 86f7d44089
2 changed files with 24 additions and 1 deletions

View File

@ -1,4 +1,8 @@
QT += network widgets
android: qtHaveModule(androidextras) {
QT += androidextras
DEFINES += REQUEST_PERMISSIONS_ON_ANDROID
}
HEADERS += httpwindow.h
SOURCES += httpwindow.cpp \

View File

@ -53,11 +53,30 @@
#include <QScreen>
#include "httpwindow.h"
#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
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
#ifdef REQUEST_PERMISSIONS_ON_ANDROID
if (!requestStoragePermission())
return -1;
#endif
HttpWindow httpWin;
const QRect availableSize = httpWin.screen()->availableGeometry();
httpWin.resize(availableSize.width() / 5, availableSize.height() / 5);