From 0560e597a61320a491c13028f78f1a1e0fb75498 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 6 Feb 2024 12:38:30 +0200 Subject: [PATCH] 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.5 Fixes: QTBUG-121668 Change-Id: I38512ffc07c1a3ffe7cddffa937b98332f172d15 Reviewed-by: Ville Voutilainen (cherry picked from commit 7fa6d09ca20b27b8350e6e26040372ba70e6244d) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 6ca01cd2d24f75273e9aeeed8a45417e2b81bf66) --- .../corelib/platform/androidnotifier/CMakeLists.txt | 1 + .../androidnotifier/android/AndroidManifest.xml | 2 +- .../platform/androidnotifier/notificationclient.cpp | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/examples/corelib/platform/androidnotifier/CMakeLists.txt b/examples/corelib/platform/androidnotifier/CMakeLists.txt index e5271edd799..33ce55548c2 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 b2d9cc76808..cf418e1ae84 100644 --- a/examples/corelib/platform/androidnotifier/android/AndroidManifest.xml +++ b/examples/corelib/platform/androidnotifier/android/AndroidManifest.xml @@ -7,7 +7,7 @@ - + diff --git a/examples/corelib/platform/androidnotifier/notificationclient.cpp b/examples/corelib/platform/androidnotifier/notificationclient.cpp index af1cb7322a7..aa6093c29cb 100644 --- a/examples/corelib/platform/androidnotifier/notificationclient.cpp +++ b/examples/corelib/platform/androidnotifier/notificationclient.cpp @@ -5,10 +5,22 @@ #include #include +#include + +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); }