Fix missing permissions on newer Android versions

This commit is contained in:
Niko Diamadis
2023-01-25 15:31:16 +01:00
parent 5de51147f2
commit af9207c7a0
4 changed files with 28 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
package com.github.gotify.init
import android.Manifest
import android.app.NotificationManager
import android.content.Intent
import android.os.Build
@@ -22,6 +23,7 @@ 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
internal class InitializationActivity : AppCompatActivity() {
@@ -46,7 +48,9 @@ internal class InitializationActivity : AppCompatActivity() {
Log.i("Entering ${javaClass.simpleName}")
if (settings.tokenExists()) {
tryAuthenticate()
runWithNeededPermissions {
tryAuthenticate()
}
} else {
showLogin()
}
@@ -130,4 +134,23 @@ internal class InitializationActivity : AppCompatActivity() {
.version
.enqueue(Callback.callInUI(this, callback, errorCallback))
}
private fun runWithNeededPermissions(action: () -> Unit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Android 13 and above
runWithPermissions(
Manifest.permission.SCHEDULE_EXACT_ALARM,
Manifest.permission.POST_NOTIFICATIONS,
callback = action
)
} else {
// Android 12 and Android 12L
runWithPermissions(Manifest.permission.SCHEDULE_EXACT_ALARM, callback = action)
}
} else {
// Android 11 and below
action()
}
}
}