From 3b74ad52576685d1ec3c722f253dd6e1db3b5e34 Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Tue, 1 Nov 2022 13:08:04 +0100 Subject: PermissionsFragment: Hide notification permission switch on Android < 13 --- .../java/at/bitfire/davdroid/ui/PermissionsFragment.kt | 18 ++++++++++++++---- app/src/main/res/layout/activity_permissions.xml | 3 +++ app/src/main/res/values/strings.xml | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/at/bitfire/davdroid/ui/PermissionsFragment.kt b/app/src/main/java/at/bitfire/davdroid/ui/PermissionsFragment.kt index 77de939f..5d3b3cc4 100644 --- a/app/src/main/java/at/bitfire/davdroid/ui/PermissionsFragment.kt +++ b/app/src/main/java/at/bitfire/davdroid/ui/PermissionsFragment.kt @@ -65,7 +65,7 @@ class PermissionsFragment: Fragment() { requestPermission.launch(CALENDAR_PERMISSIONS) }) model.needNotificationPermissions.observe(viewLifecycleOwner, { needNotifications -> - if (needNotifications && model.haveNotificationPermissions.value == false) + if (needNotifications == true && model.haveNotificationPermissions.value == false) requestPermission.launch(arrayOf(Manifest.permission.POST_NOTIFICATIONS)) }) model.needOpenTasksPermissions.observe(viewLifecycleOwner, { needOpenTasks -> @@ -162,9 +162,19 @@ class PermissionsFragment: Fragment() { haveCalendarPermissions.value = calendarPermissions needCalendarPermissions.value = calendarPermissions - val notificationPermissions = ContextCompat.checkSelfPermission(getApplication(), Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED - haveNotificationPermissions.value = notificationPermissions - needNotificationPermissions.value = notificationPermissions + val notificationPermissions: Boolean + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + // Android 13: POST_NOTIFICATIONS permission required + notificationPermissions = + ContextCompat.checkSelfPermission(getApplication(), Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED + haveNotificationPermissions.value = notificationPermissions + needNotificationPermissions.value = notificationPermissions + } else { + // Android <= 12: hide the POST_NOTIFICATIONS switch + notificationPermissions = true + haveNotificationPermissions.value = null + needNotificationPermissions.value = null + } // OpenTasks val openTasksAvailable = pm.resolveContentProvider(ProviderName.OpenTasks.authority, 0) != null diff --git a/app/src/main/res/layout/activity_permissions.xml b/app/src/main/res/layout/activity_permissions.xml index 60135c6c..e363aae1 100644 --- a/app/src/main/res/layout/activity_permissions.xml +++ b/app/src/main/res/layout/activity_permissions.xml @@ -152,6 +152,7 @@ Calendar permissions No calendar sync (not recommended) Calendar sync possible - Notification permissions + Notification permission Notifications disabled (not recommended) Notifications enabled jtx Board permissions -- cgit v1.2.3