summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/common/qandroidmultimediautils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/src/common/qandroidmultimediautils.cpp')
-rw-r--r--src/plugins/android/src/common/qandroidmultimediautils.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/plugins/android/src/common/qandroidmultimediautils.cpp b/src/plugins/android/src/common/qandroidmultimediautils.cpp
index c7a16dcf0..a4a7f773d 100644
--- a/src/plugins/android/src/common/qandroidmultimediautils.cpp
+++ b/src/plugins/android/src/common/qandroidmultimediautils.cpp
@@ -38,8 +38,11 @@
****************************************************************************/
#include "qandroidmultimediautils.h"
+#include "qandroidglobal.h"
#include <qlist.h>
+#include <QtCore/private/qjni_p.h>
+#include <QtCore/private/qjnihelpers_p.h>
QT_BEGIN_NAMESPACE
@@ -110,4 +113,30 @@ AndroidCamera::ImageFormat qt_androidImageFormatFromPixelFormat(QVideoFrame::Pix
}
}
+bool qt_androidRequestPermission(const QString &key)
+{
+ using namespace QtAndroidPrivate;
+
+ if (androidSdkVersion() < 23)
+ return true;
+
+ PermissionsResult res = checkPermission(key);
+ if (res == PermissionsResult::Granted) // Permission already granted?
+ return true;
+
+ QJNIEnvironmentPrivate env;
+ const auto &results = requestPermissionsSync(env, QStringList() << key);
+ if (!results.contains(key)) {
+ qCWarning(qtAndroidMediaPlugin, "No permission found for key: %s", qPrintable(key));
+ return false;
+ }
+
+ if (results[key] == PermissionsResult::Denied) {
+ qCDebug(qtAndroidMediaPlugin, "%s - Permission denied by user!", qPrintable(key));
+ return false;
+ }
+
+ return true;
+}
+
QT_END_NAMESPACE