summaryrefslogtreecommitdiffstats
path: root/examples/corelib
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2024-02-06 12:38:30 +0200
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2024-02-06 17:23:42 +0200
commit7fa6d09ca20b27b8350e6e26040372ba70e6244d (patch)
tree83eb833b9655c82c905a176cbe1b03d20cc5eb7b /examples/corelib
parentff6a6d3285c48d5e54bf03361115116f58461e33 (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')
-rw-r--r--examples/corelib/platform/androidnotifier/CMakeLists.txt1
-rw-r--r--examples/corelib/platform/androidnotifier/android/AndroidManifest.xml1
-rw-r--r--examples/corelib/platform/androidnotifier/notificationclient.cpp12
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);
}