From e373144350c204c9a98f3a17cda7c73655c2ccfb Mon Sep 17 00:00:00 2001 From: 21pages Date: Tue, 7 May 2024 18:45:05 +0800 Subject: [PATCH] android 13+ request notification permission when start service (#7941) Signed-off-by: 21pages --- flutter/android/app/src/main/AndroidManifest.xml | 1 + flutter/lib/consts.dart | 7 +++++-- flutter/lib/models/server_model.dart | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/flutter/android/app/src/main/AndroidManifest.xml b/flutter/android/app/src/main/AndroidManifest.xml index 1b99801bf..4e5c2eae2 100644 --- a/flutter/android/app/src/main/AndroidManifest.xml +++ b/flutter/android/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ package="com.carriez.flutter_hbb"> + diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index 14182649e..1b0e72f05 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -20,8 +20,10 @@ const String kPlatformAdditionsIsWayland = "is_wayland"; const String kPlatformAdditionsHeadless = "headless"; const String kPlatformAdditionsIsInstalled = "is_installed"; const String kPlatformAdditionsIddImpl = "idd_impl"; -const String kPlatformAdditionsRustDeskVirtualDisplays = "rustdesk_virtual_displays"; -const String kPlatformAdditionsAmyuniVirtualDisplays = "amyuni_virtual_displays"; +const String kPlatformAdditionsRustDeskVirtualDisplays = + "rustdesk_virtual_displays"; +const String kPlatformAdditionsAmyuniVirtualDisplays = + "amyuni_virtual_displays"; const String kPlatformAdditionsHasFileClipboard = "has_file_clipboard"; const String kPlatformAdditionsSupportedPrivacyModeImpl = "supported_privacy_mode_impl"; @@ -224,6 +226,7 @@ const kManageExternalStorage = "android.permission.MANAGE_EXTERNAL_STORAGE"; const kRequestIgnoreBatteryOptimizations = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"; const kSystemAlertWindow = "android.permission.SYSTEM_ALERT_WINDOW"; +const kAndroid13Notification = "android.permission.POST_NOTIFICATIONS"; /// Android channel invoke type key class AndroidChannel { diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index d62230c72..82cc8367a 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -322,6 +322,20 @@ class ServerModel with ChangeNotifier { } } + Future checkRequestNotificationPermission() async { + debugPrint("androidVersion $androidVersion"); + if (androidVersion < 33) { + return true; + } + if (await AndroidPermissionManager.check(kAndroid13Notification)) { + debugPrint("notification permission already granted"); + return true; + } + var res = await AndroidPermissionManager.request(kAndroid13Notification); + debugPrint("notification permission request result: $res"); + return res; + } + /// Toggle the screen sharing service. toggleService() async { if (_isStart) { @@ -348,6 +362,7 @@ class ServerModel with ChangeNotifier { stopService(); } } else { + await checkRequestNotificationPermission(); final res = await parent.target?.dialogManager .show((setState, close, context) { submit() => close(true);