diff --git a/app/build.gradle b/app/build.gradle
index c5a50aa..78b0144 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -68,7 +68,7 @@ dependencies {
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.preference:preference:1.2.0'
- implementation 'com.github.quickpermissions:quickpermissions-kotlin:0.4.0'
+ implementation 'com.github.cyb3rko:QuickPermissions-Kotlin:1.0.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 4c76aba..ae342d9 100644
--- a/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt
+++ b/app/src/main/kotlin/com/github/gotify/init/InitializationActivity.kt
@@ -23,7 +23,9 @@ import com.github.gotify.login.LoginActivity
import com.github.gotify.messages.MessagesActivity
import com.github.gotify.service.WebSocketService
import com.github.gotify.settings.ThemeHelper
-import com.livinglifetechway.quickpermissions_kotlin.runWithPermissions
+import com.livinglifetechway.quickpermissionskotlin.runWithPermissions
+import com.livinglifetechway.quickpermissionskotlin.util.QuickPermissionsOptions
+import com.livinglifetechway.quickpermissionskotlin.util.QuickPermissionsRequest
internal class InitializationActivity : AppCompatActivity() {
@@ -137,20 +139,52 @@ internal class InitializationActivity : AppCompatActivity() {
private fun runWithNeededPermissions(action: () -> Unit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ val quickPermissionsOption = QuickPermissionsOptions(
+ handleRationale = true,
+ handlePermanentlyDenied = true,
+ rationaleMethod = { req -> processPermissionRationale(req) },
+ permissionsDeniedMethod = { req -> processPermissionRationale(req) },
+ permanentDeniedMethod = { req -> processPermissionsPermanentDenied(req) }
+ )
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Android 13 and above
runWithPermissions(
Manifest.permission.SCHEDULE_EXACT_ALARM,
Manifest.permission.POST_NOTIFICATIONS,
+ options = quickPermissionsOption,
callback = action
)
} else {
// Android 12 and Android 12L
- runWithPermissions(Manifest.permission.SCHEDULE_EXACT_ALARM, callback = action)
+ runWithPermissions(
+ Manifest.permission.SCHEDULE_EXACT_ALARM,
+ options = quickPermissionsOption,
+ callback = action
+ )
}
} else {
// Android 11 and below
action()
}
}
+
+ private fun processPermissionRationale(req: QuickPermissionsRequest) {
+ AlertDialog.Builder(this)
+ .setMessage(getString(R.string.permissions_denied_temp))
+ .setPositiveButton(getString(R.string.permissions_dialog_grant)) { _, _ ->
+ req.proceed()
+ }
+ .setCancelable(false)
+ .show()
+ }
+
+ private fun processPermissionsPermanentDenied(req: QuickPermissionsRequest) {
+ AlertDialog.Builder(this)
+ .setMessage(getString(R.string.permissions_denied_permanent))
+ .setPositiveButton(getString(R.string.permissions_dialog_grant)) { _, _ ->
+ req.openAppSettings()
+ }
+ .setCancelable(false)
+ .show()
+ }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c440644..a217c94 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -45,6 +45,9 @@
Failed to read CA: %s
Login
Check URL
+ Grant
+ Please grant the following required permissions.
+ Please grant the required permissions in the settings.
Gotify logo
Refresh all
Do you really want to logout?