app installer: reject self-update

close #47
This commit is contained in:
BinTianqi
2024-07-06 12:36:02 +08:00
parent 89cfafb03a
commit 4ebb9b48f0
4 changed files with 14 additions and 5 deletions

View File

@@ -58,28 +58,34 @@ class InstallAppActivity: FragmentActivity() {
)
fd?.close()
withContext(Dispatchers.Main) {
status = "waiting"
apkInfoText = "${context.getString(R.string.package_name)}: ${apkInfo.packageName}\n"
apkInfoText += "${context.getString(R.string.version_name)}: ${apkInfo.versionName}\n"
apkInfoText += "${context.getString(R.string.version_code)}: ${apkInfo.versionCode}"
if(apkInfo.packageName == packageName) {
status = "self_update"
apkInfoText += "\n" + context.getString(R.string.update_using_system_installer)
} else {
status = "waiting"
}
}
}
setContent {
val canExit = status == "waiting" || status == "self_update"
OwnDroidTheme(
sharedPref.getBoolean("material_you", true),
sharedPref.getBoolean("black_theme", false)
) {
AlertDialog(
properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false),
properties = DialogProperties(dismissOnBackPress = canExit, dismissOnClickOutside = canExit),
title = {
Text(stringResource(R.string.install_app))
},
onDismissRequest = {
if(status != "installing") finish()
if(canExit) finish()
},
text = {
Column {
AnimatedVisibility(status != "waiting") {
AnimatedVisibility(status != "waiting" && status != "self_update") {
LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
}
Text(text = apkInfoText, modifier = Modifier.padding(top = 4.dp))
@@ -99,7 +105,7 @@ class InstallAppActivity: FragmentActivity() {
status = "installing"
uriToStream(applicationContext, this.intent.data) { stream -> installPackage(applicationContext, stream) }
},
enabled = status != "installing"
enabled = status == "waiting"
) {
Text(stringResource(R.string.install))
}