diff options
author | Ricki Hirner <hirner@bitfire.at> | 2022-11-01 15:08:04 +0300 |
---|---|---|
committer | Ricki Hirner <hirner@bitfire.at> | 2022-11-04 19:53:30 +0300 |
commit | 3b74ad52576685d1ec3c722f253dd6e1db3b5e34 (patch) | |
tree | 2b3fc846af138c42a76aefbc4b4628ae8c69e4fb | |
parent | e4a5c47887c844f7d5f82abda1a4532e9e9e2c22 (diff) |
PermissionsFragment: Hide notification permission switch on Android < 13
-rw-r--r-- | app/src/main/java/at/bitfire/davdroid/ui/PermissionsFragment.kt | 18 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_permissions.xml | 3 | ||||
-rw-r--r-- | 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 @@ <TextView android:id="@+id/notificationHeading" style="@style/TextAppearance.MaterialComponents.Body1" + android:visibility="@{model.haveNotificationPermissions != null ? View.VISIBLE : View.GONE}" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="@dimen/card_margin_title_text" @@ -165,6 +166,7 @@ <TextView android:id="@+id/notificationStatus" style="@style/TextAppearance.MaterialComponents.Body2" + android:visibility="@{model.haveNotificationPermissions != null ? View.VISIBLE : View.GONE}" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@{model.haveNotificationPermissions ? @string/permissions_notification_status_on : @string/permissions_notification_status_off}" @@ -176,6 +178,7 @@ android:id="@+id/notificationSwitch" android:layout_width="wrap_content" android:layout_height="match_parent" + android:visibility="@{model.haveNotificationPermissions != null ? View.VISIBLE : View.GONE}" app:layout_constraintTop_toTopOf="@id/notificationHeading" app:layout_constraintBottom_toBottomOf="@id/notificationStatus" app:layout_constraintEnd_toStartOf="@id/end" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a4088b9a..09a38eec 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,7 +72,7 @@ <string name="permissions_calendar_title">Calendar permissions</string> <string name="permissions_calendar_status_off">No calendar sync (not recommended)</string> <string name="permissions_calendar_status_on">Calendar sync possible</string> - <string name="permissions_notification_title">Notification permissions</string> + <string name="permissions_notification_title">Notification permission</string> <string name="permissions_notification_status_off">Notifications disabled (not recommended)</string> <string name="permissions_notification_status_on">Notifications enabled</string> <string name="permissions_jtx_title">jtx Board permissions</string> |