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:
parent
bf377dd1af
commit
86f7d44089
@ -1,4 +1,8 @@
|
|||||||
QT += network widgets
|
QT += network widgets
|
||||||
|
android: qtHaveModule(androidextras) {
|
||||||
|
QT += androidextras
|
||||||
|
DEFINES += REQUEST_PERMISSIONS_ON_ANDROID
|
||||||
|
}
|
||||||
|
|
||||||
HEADERS += httpwindow.h
|
HEADERS += httpwindow.h
|
||||||
SOURCES += httpwindow.cpp \
|
SOURCES += httpwindow.cpp \
|
||||||
|
@ -53,11 +53,30 @@
|
|||||||
#include <QScreen>
|
#include <QScreen>
|
||||||
|
|
||||||
#include "httpwindow.h"
|
#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[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
#ifdef REQUEST_PERMISSIONS_ON_ANDROID
|
||||||
|
if (!requestStoragePermission())
|
||||||
|
return -1;
|
||||||
|
#endif
|
||||||
HttpWindow httpWin;
|
HttpWindow httpWin;
|
||||||
const QRect availableSize = httpWin.screen()->availableGeometry();
|
const QRect availableSize = httpWin.screen()->availableGeometry();
|
||||||
httpWin.resize(availableSize.width() / 5, availableSize.height() / 5);
|
httpWin.resize(availableSize.width() / 5, availableSize.height() / 5);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user