No need to select Start Automatically again after permission is allowed

Dependencies upgrade
This commit is contained in:
Juha Heinanen
2026-04-26 09:16:36 +03:00
parent cbbd7e005e
commit 2184780eb4
3 changed files with 35 additions and 8 deletions

View File

@ -82,6 +82,7 @@ dependencies {
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.navigation.runtime.android)
implementation(libs.androidx.lifecycle.process)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.compose.material.icons.core)
implementation(libs.androidx.compose.material.icons.extended)

View File

@ -58,6 +58,7 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
@ -69,6 +70,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.KeyboardType
@ -76,6 +78,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale
import androidx.core.net.toUri
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
@ -239,6 +243,25 @@ private fun SettingsContent(
activity: Activity,
onRestartApp: () -> Unit
) {
val ctx = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current
var pendingAutoStart by remember { mutableStateOf(false) }
DisposableEffect(lifecycleOwner) {
val observer = LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) {
if (pendingAutoStart && isAppearOnTopPermissionGranted(ctx)) {
viewModel.autoStart.value = true
pendingAutoStart = false
}
}
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
val alertTitleText = stringResource(R.string.alert)
val errorTitleText = stringResource(R.string.error)
val noticeTitleText = stringResource(R.string.notice)
@ -303,6 +326,7 @@ private fun SettingsContent(
lastButtonText.value = okButtonText
onLastClicked.value = {
val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)
pendingAutoStart = true
ctx.startActivity(intent)
}
showDialog.value = true

View File

@ -1,7 +1,7 @@
[versions]
activityCompose = "1.13.0"
coilCompose = "2.7.0"
composeBom = "2026.03.01"
composeBom = "2026.04.01"
coreKtx = "1.18.0"
exifinterface = "1.4.2"
fragmentKtx = "1.8.9"
@ -12,19 +12,20 @@ kotlinSerializationPlugin = "2.3.20"
kotlinxCoroutinesAndroid = "1.10.2"
kotlinxSerializationJson = "1.11.0"
lifecycleProcess = "2.10.0"
lifecycleRuntimeCompose = "2.10.0"
lifecycleViewmodelKtx = "2.10.0"
material = "1.13.0"
media = "1.7.1"
navigationCompose = "2.9.7"
navigationCompose = "2.9.8"
preferenceKtx = "1.2.1"
ui = "1.10.6"
foundationAndroid = "1.10.6"
runtimeLivedata = "1.10.6"
ui = "1.11.0"
foundationAndroid = "1.11.0"
runtimeLivedata = "1.11.0"
composeMaterial3 = "1.4.0"
navigationRuntimeAndroid = "2.9.7"
navigationRuntimeAndroid = "2.9.8"
composeMaterialIcons = "1.7.8"
runtime = "1.10.6"
uiText = "1.10.6"
runtime = "1.11.0"
uiText = "1.11.0"
[libraries]
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
@ -34,6 +35,7 @@ androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx"
androidx-exifinterface = { module = "androidx.exifinterface:exifinterface", version.ref = "exifinterface" }
androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragmentKtx" }
androidx-lifecycle-process = { group = "androidx.lifecycle", name = "lifecycle-process", version.ref = "lifecycleProcess" }
androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeCompose" }
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" }
androidx-media = { module = "androidx.media:media", version.ref = "media" }
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }