Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/davx5-ose.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicki Hirner <hirner@bitfire.at>2022-11-01 15:08:04 +0300
committerRicki Hirner <hirner@bitfire.at>2022-11-04 19:53:30 +0300
commit3b74ad52576685d1ec3c722f253dd6e1db3b5e34 (patch)
tree2b3fc846af138c42a76aefbc4b4628ae8c69e4fb
parente4a5c47887c844f7d5f82abda1a4532e9e9e2c22 (diff)
PermissionsFragment: Hide notification permission switch on Android < 13
-rw-r--r--app/src/main/java/at/bitfire/davdroid/ui/PermissionsFragment.kt18
-rw-r--r--app/src/main/res/layout/activity_permissions.xml3
-rw-r--r--app/src/main/res/values/strings.xml2
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>