diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2024-02-06 12:38:30 +0200 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2024-02-06 17:23:42 +0200 |
commit | 7fa6d09ca20b27b8350e6e26040372ba70e6244d (patch) | |
tree | 83eb833b9655c82c905a176cbe1b03d20cc5eb7b /examples/corelib | |
parent | ff6a6d3285c48d5e54bf03361115116f58461e33 (diff) |
Android: request POST_NOTIFICATIONS permission for Android Notifier
Android 13 and above requires the notification permission
"android.permission.POST_NOTIFICATIONS" to be requested at runtime.
Pick-to: 6.7 6.6 6.5
Fixes: QTBUG-121668
Change-Id: I38512ffc07c1a3ffe7cddffa937b98332f172d15
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Diffstat (limited to 'examples/corelib')
3 files changed, 14 insertions, 0 deletions
diff --git a/examples/corelib/platform/androidnotifier/CMakeLists.txt b/examples/corelib/platform/androidnotifier/CMakeLists.txt index e5271edd79..33ce55548c 100644 --- a/examples/corelib/platform/androidnotifier/CMakeLists.txt +++ b/examples/corelib/platform/androidnotifier/CMakeLists.txt @@ -28,6 +28,7 @@ qt_add_executable(androidnotifier ) target_link_libraries(androidnotifier PRIVATE + Qt6::CorePrivate Qt6::Widgets ) diff --git a/examples/corelib/platform/androidnotifier/android/AndroidManifest.xml b/examples/corelib/platform/androidnotifier/android/AndroidManifest.xml index a77ed4ab12..778028a566 100644 --- a/examples/corelib/platform/androidnotifier/android/AndroidManifest.xml +++ b/examples/corelib/platform/androidnotifier/android/AndroidManifest.xml @@ -6,6 +6,7 @@ android:versionName="1.0"> <!-- %%INSERT_PERMISSIONS --> + <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <!-- %%INSERT_FEATURES --> <supports-screens diff --git a/examples/corelib/platform/androidnotifier/notificationclient.cpp b/examples/corelib/platform/androidnotifier/notificationclient.cpp index af1cb7322a..aa6093c29c 100644 --- a/examples/corelib/platform/androidnotifier/notificationclient.cpp +++ b/examples/corelib/platform/androidnotifier/notificationclient.cpp @@ -5,10 +5,22 @@ #include <QtCore/qjniobject.h> #include <QtCore/qcoreapplication.h> +#include <QtCore/private/qandroidextras_p.h> + +using namespace Qt::StringLiterals; NotificationClient::NotificationClient(QObject *parent) : QObject(parent) { + if (QNativeInterface::QAndroidApplication::sdkVersion() >= __ANDROID_API_T__) { + const auto notificationPermission = "android.permission.POST_NOTIFICATIONS"_L1; + auto requestResult = QtAndroidPrivate::requestPermission(notificationPermission); + if (requestResult.result() != QtAndroidPrivate::Authorized) { + qWarning() << "Failed to acquire permission to post notifications " + "(required for Android 13+)"; + } + } + connect(this, &NotificationClient::notificationChanged, this, &NotificationClient::updateAndroidNotification); } |