diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-05-06 16:46:37 +0300 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-05-18 07:53:16 +0000 |
commit | 4a2d272886eeb4f61c4830dbe1f3a0421d167fda (patch) | |
tree | 1c716a61809b49dfc93abbf85ad3bb76e3819768 /src/multimedia/platform/android/common/qandroidmultimediautils.cpp | |
parent | 9c3be78dacfad5817fba1afa8bba44b1c05652d2 (diff) |
Android: Use public Jni APIs as possible
* Update usage of JNI APIs (QJniObject, QJniEnvironment)
* Avoid usage of QtAndroidPrivate as possible by using QNativeInterface
Some instances still use native JNI APIs, because they don't yet have an
alternative with the Qt public APIs, those can be fixed later.
Task-number: QTBUG-93800
Change-Id: Iae0f18ef450c11a0f93133d948e78dc013c7ff3b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/platform/android/common/qandroidmultimediautils.cpp')
-rw-r--r-- | src/multimedia/platform/android/common/qandroidmultimediautils.cpp | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/multimedia/platform/android/common/qandroidmultimediautils.cpp b/src/multimedia/platform/android/common/qandroidmultimediautils.cpp index 738303099..201744444 100644 --- a/src/multimedia/platform/android/common/qandroidmultimediautils.cpp +++ b/src/multimedia/platform/android/common/qandroidmultimediautils.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Toolkit. @@ -41,8 +41,7 @@ #include "qandroidglobal_p.h" #include <qlist.h> -#include <QtCore/private/qjni_p.h> -#include <QtCore/private/qjnihelpers_p.h> +#include <QtCore/qcoreapplication.h> QT_BEGIN_NAMESPACE @@ -109,40 +108,39 @@ AndroidCamera::ImageFormat qt_androidImageFormatFromPixelFormat(QVideoFrameForma } } -static bool androidRequestPermission(const QString &key) +static bool androidRequestPermission(QPermission::PermisionType key) { - using namespace QtAndroidPrivate; - - if (androidSdkVersion() < 23) + if (QNativeInterface::QAndroidApplication::sdkVersion() < 23) return true; - PermissionsResult res = checkPermission(key); - if (res == PermissionsResult::Granted) // Permission already granted? + // Permission already granted? + if (QCoreApplication::checkPermission(key).result() == QPermission::Authorized) 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)); + if (QCoreApplication::requestPermission(key).result() != QPermission::Authorized) return false; - } - - if (results[key] == PermissionsResult::Denied) { - qCDebug(qtAndroidMediaPlugin, "%s - Permission denied by user!", qPrintable(key)); - return false; - } return true; } bool qt_androidRequestCameraPermission() { - return androidRequestPermission(QLatin1String("android.permission.CAMERA")); + if (!androidRequestPermission(QPermission::Camera)) { + qCDebug(qtAndroidMediaPlugin, "Camera permission denied by user!"); + return false; + } + + return true; } bool qt_androidRequestRecordingPermission() { - return androidRequestPermission(QLatin1String("android.permission.RECORD_AUDIO")); + if (!androidRequestPermission(QPermission::Microphone)) { + qCDebug(qtAndroidMediaPlugin, "Microphone permission denied by user!"); + return false; + } + + return true; } QT_END_NAMESPACE |