From 55606a53192f7e345c846c7720f63ed052f52b5e Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Sun, 1 Oct 2023 12:39:17 +0200 Subject: [PATCH 1/4] Fix blocking permission requests --- .../com/github/gotify/init/InitializationActivity.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt index 488810f8..a8e83ad9 100644 --- a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt +++ b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt @@ -5,6 +5,7 @@ import android.app.AlarmManager import android.app.NotificationManager import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle @@ -85,6 +86,8 @@ internal class InitializationActivity : AppCompatActivity() { if (manager?.canScheduleExactAlarms() == true) { tryAuthenticate() } else { + splashScreenActive = false + setContentView(R.layout.splash) alarmDialog() } } @@ -192,6 +195,12 @@ internal class InitializationActivity : AppCompatActivity() { private fun runWithPostNotificationsPermission(action: () -> Unit) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { // Android 13 and above + if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED + ) { + splashScreenActive = false + setContentView(R.layout.splash) + } val quickPermissionsOption = QuickPermissionsOptions( handleRationale = true, handlePermanentlyDenied = true, From 167eeaf1c25a4eaffad2ec32639ee8b09fe2e85b Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Tue, 3 Oct 2023 11:42:23 +0200 Subject: [PATCH 2/4] Use new QuickPermissions parameter to remove duplicate check --- app/build.gradle | 2 +- .../github/gotify/init/InitializationActivity.kt | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a18c1042..8dbe4917 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,7 +74,7 @@ dependencies { implementation 'androidx.vectordrawable:vectordrawable:1.1.0' implementation 'androidx.preference:preference-ktx:1.2.0' - implementation 'com.github.cyb3rko:QuickPermissions-Kotlin:1.0.2' + implementation 'com.github.cyb3rko:QuickPermissions-Kotlin:1.1.1' implementation 'com.hypertrack:hyperlog:0.0.10' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'io.noties.markwon:core:4.6.2' diff --git a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt index a8e83ad9..bba4077c 100644 --- a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt +++ b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt @@ -5,7 +5,6 @@ import android.app.AlarmManager import android.app.NotificationManager import android.content.Context import android.content.Intent -import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle @@ -195,15 +194,10 @@ internal class InitializationActivity : AppCompatActivity() { private fun runWithPostNotificationsPermission(action: () -> Unit) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { // Android 13 and above - if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) - != PackageManager.PERMISSION_GRANTED - ) { - splashScreenActive = false - setContentView(R.layout.splash) - } val quickPermissionsOption = QuickPermissionsOptions( handleRationale = true, handlePermanentlyDenied = true, + preRationaleAction = { stopSlashScreen() }, rationaleMethod = { req -> processPermissionRationale(req) }, permissionsDeniedMethod = { req -> processPermissionRationale(req) }, permanentDeniedMethod = { req -> processPermissionsPermanentDenied(req) } @@ -219,6 +213,11 @@ internal class InitializationActivity : AppCompatActivity() { } } + private fun stopSlashScreen() { + splashScreenActive = false + setContentView(R.layout.splash) + } + private fun processPermissionRationale(req: QuickPermissionsRequest) { MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.permissions_notification_denied_temp)) From ba040332b07a042e79a689a0eda893849df743dc Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Tue, 3 Oct 2023 12:22:43 +0200 Subject: [PATCH 3/4] Update to QuickPermissions 1.1.2 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 8dbe4917..decdc202 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,7 +74,7 @@ dependencies { implementation 'androidx.vectordrawable:vectordrawable:1.1.0' implementation 'androidx.preference:preference-ktx:1.2.0' - implementation 'com.github.cyb3rko:QuickPermissions-Kotlin:1.1.1' + implementation 'com.github.cyb3rko:QuickPermissions-Kotlin:1.1.2' implementation 'com.hypertrack:hyperlog:0.0.10' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'io.noties.markwon:core:4.6.2' From 3390a2d9f59296f3d234868e3a285eab2172c856 Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Tue, 3 Oct 2023 13:07:42 +0200 Subject: [PATCH 4/4] Remove duplicate code blocks --- .../kotlin/com/github/gotify/init/InitializationActivity.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt index bba4077c..fc9e7433 100644 --- a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt +++ b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt @@ -85,8 +85,7 @@ internal class InitializationActivity : AppCompatActivity() { if (manager?.canScheduleExactAlarms() == true) { tryAuthenticate() } else { - splashScreenActive = false - setContentView(R.layout.splash) + stopSlashScreen() alarmDialog() } } @@ -110,8 +109,7 @@ internal class InitializationActivity : AppCompatActivity() { } private fun failed(exception: ApiException) { - splashScreenActive = false - setContentView(R.layout.splash) + stopSlashScreen() when (exception.code) { 0 -> { dialog(getString(R.string.not_available, settings.url))