From 32e4a04cd6544f14e3d567e81cf81aa08ece045f Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 7 Jan 2026 10:04:41 -0300 Subject: [PATCH] Handle disabled pre-approval Pre-approval can be disabled and we get STATUS_FAILURE_BLOCKED which should be sufficient. There's also a hidden official error code we don't use for now: https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/core/java/android/content/pm/PackageManager.java;l=2644;drc=905556173324d48059d4bae77408748a76497ac9 --- .../org/fdroid/install/SessionInstallManager.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/org/fdroid/install/SessionInstallManager.kt b/app/src/main/kotlin/org/fdroid/install/SessionInstallManager.kt index 6b9518c9c..8b829b0ba 100644 --- a/app/src/main/kotlin/org/fdroid/install/SessionInstallManager.kt +++ b/app/src/main/kotlin/org/fdroid/install/SessionInstallManager.kt @@ -150,12 +150,13 @@ class SessionInstallManager @Inject constructor( context.unregisterReceiver(this) } } - else -> { // some error, can't help it now, continue - if (status == PackageInstaller.STATUS_FAILURE_ABORTED) { - cont.resume(PreApprovalResult.UserAborted) - } else { - cont.resume(PreApprovalResult.Error(msg)) + else -> { + val result = when (status) { + PackageInstaller.STATUS_FAILURE_ABORTED -> PreApprovalResult.UserAborted + PackageInstaller.STATUS_FAILURE_BLOCKED -> PreApprovalResult.NotSupported + else -> PreApprovalResult.Error(msg) } + cont.resume(result) context.unregisterReceiver(this) } }