Use QuickPermissions fork + use custom dialogs
This commit is contained in:
@@ -68,7 +68,7 @@ dependencies {
|
|||||||
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
|
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
|
||||||
implementation 'androidx.preference:preference:1.2.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.hypertrack:hyperlog:0.0.10'
|
||||||
implementation 'com.squareup.picasso:picasso:2.71828'
|
implementation 'com.squareup.picasso:picasso:2.71828'
|
||||||
implementation 'io.noties.markwon:core:4.6.2'
|
implementation 'io.noties.markwon:core:4.6.2'
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ import com.github.gotify.login.LoginActivity
|
|||||||
import com.github.gotify.messages.MessagesActivity
|
import com.github.gotify.messages.MessagesActivity
|
||||||
import com.github.gotify.service.WebSocketService
|
import com.github.gotify.service.WebSocketService
|
||||||
import com.github.gotify.settings.ThemeHelper
|
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() {
|
internal class InitializationActivity : AppCompatActivity() {
|
||||||
|
|
||||||
@@ -137,20 +139,52 @@ internal class InitializationActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
private fun runWithNeededPermissions(action: () -> Unit) {
|
private fun runWithNeededPermissions(action: () -> Unit) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
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) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
// Android 13 and above
|
// Android 13 and above
|
||||||
runWithPermissions(
|
runWithPermissions(
|
||||||
Manifest.permission.SCHEDULE_EXACT_ALARM,
|
Manifest.permission.SCHEDULE_EXACT_ALARM,
|
||||||
Manifest.permission.POST_NOTIFICATIONS,
|
Manifest.permission.POST_NOTIFICATIONS,
|
||||||
|
options = quickPermissionsOption,
|
||||||
callback = action
|
callback = action
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// Android 12 and Android 12L
|
// Android 12 and Android 12L
|
||||||
runWithPermissions(Manifest.permission.SCHEDULE_EXACT_ALARM, callback = action)
|
runWithPermissions(
|
||||||
|
Manifest.permission.SCHEDULE_EXACT_ALARM,
|
||||||
|
options = quickPermissionsOption,
|
||||||
|
callback = action
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Android 11 and below
|
// Android 11 and below
|
||||||
action()
|
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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,9 @@
|
|||||||
<string name="select_ca_failed">Failed to read CA: %s</string>
|
<string name="select_ca_failed">Failed to read CA: %s</string>
|
||||||
<string name="login">Login</string>
|
<string name="login">Login</string>
|
||||||
<string name="check_url">Check URL</string>
|
<string name="check_url">Check URL</string>
|
||||||
|
<string name="permissions_dialog_grant">Grant</string>
|
||||||
|
<string name="permissions_denied_temp">Please grant the following required permissions.</string>
|
||||||
|
<string name="permissions_denied_permanent">Please grant the required permissions in the settings.</string>
|
||||||
<string name="gotify_logo">Gotify logo</string>
|
<string name="gotify_logo">Gotify logo</string>
|
||||||
<string name="refresh_all">Refresh all</string>
|
<string name="refresh_all">Refresh all</string>
|
||||||
<string name="logout_confirm">Do you really want to logout?</string>
|
<string name="logout_confirm">Do you really want to logout?</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user