diff --git a/app/build.gradle b/app/build.gradle
index 0448d248..de468fa6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,6 +36,9 @@ android {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
+ kotlinOptions {
+ jvmTarget = '11'
+ }
lintOptions {
disable 'GoogleAppIndexingWarning'
lintConfig file('../lint.xml')
@@ -68,6 +71,7 @@ dependencies {
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.preference:preference:1.2.0'
+ implementation 'com.github.cyb3rko:QuickPermissions-Kotlin:1.0.2'
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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e398f1c3..37f4a2ac 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,8 @@
+
+
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,
+ 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 c440644f..5c097c84 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
+ Gotify requires permission to display push notifications.
+ Gotify requires permission to display push notifications. Please grant the required permission in the settings.
Gotify logo
Refresh all
Do you really want to logout?
diff --git a/build.gradle b/build.gradle
index e8dddf7f..d8ddb3ff 100644
--- a/build.gradle
+++ b/build.gradle
@@ -27,6 +27,7 @@ allprojects {
repositories {
google()
jcenter()
+ maven { url "https://jitpack.io/" }
}
}