Commit 4da8ca23 authored by Christian Strømme's avatar Christian Strømme Committed by Christian Stromme
Browse files

Android: Add convenience method for checking and requesting permissions


This will be used to check and request permissions at run-time.

Task-number: QTBUG-55992
Change-Id: I344859aeb05fecf09ac46064e9452787d615a8a1
Reviewed-by: default avatarYoann Lopes <yoann.lopes@qt.io>
Showing with 31 additions and 0 deletions
......@@ -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
......@@ -55,6 +55,8 @@ bool qt_sizeLessThan(const QSize &s1, const QSize &s2);
QVideoFrame::PixelFormat qt_pixelFormatFromAndroidImageFormat(AndroidCamera::ImageFormat f);
AndroidCamera::ImageFormat qt_androidImageFormatFromPixelFormat(QVideoFrame::PixelFormat f);
bool qt_androidRequestPermission(const QString &key);
QT_END_NAMESPACE
#endif // QANDROIDMULTIMEDIAUTILS_H
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment