From e3763e3fc551250e5678e195bf6f1bcc7e4b4f93 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 11 Oct 2023 15:36:09 -0300 Subject: [PATCH] [app] Adapt when no user action is required for app updates --- .../fdroid/fdroid/installer/SessionInstallManager.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/installer/SessionInstallManager.java b/app/src/main/java/org/fdroid/fdroid/installer/SessionInstallManager.java index 22c069ab3..c6fc928c8 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/SessionInstallManager.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/SessionInstallManager.java @@ -237,6 +237,11 @@ public class SessionInstallManager extends BroadcastReceiver { return "Xiaomi".equalsIgnoreCase(Build.BRAND) || "Redmi".equalsIgnoreCase(Build.BRAND); } + /** + * If this returns true, we can use + * {@link android.content.pm.PackageInstaller.SessionParams#setRequireUserAction(int)} with false, + * thus updating the app with the given targetSdk without user action. + */ public static boolean isTargetSdkSupported(int targetSdk) { if (Build.VERSION.SDK_INT < 31) return false; // not supported below Android 12 if (Build.VERSION.SDK_INT == 31 && targetSdk >= 29) return true; @@ -245,7 +250,7 @@ public class SessionInstallManager extends BroadcastReceiver { // This needs to be adjusted as new Android versions are released // https://developer.android.com/reference/android/content/pm/PackageInstaller.SessionParams#setRequireUserAction(int) // https://cs.android.com/android/platform/superproject/+/android-13.0.0_r42:frameworks/base/services/core/java/com/android/server/pm/PackageInstallerSession.java;l=2095;drc=6aba151873bfae198ef9eceb10f943e18b52d58c - // TODO check targetSdk Android 14 sources have been published, just a guess so far - return Build.VERSION.SDK_INT == 34 && targetSdk >= 31; + // current code requires targetSdk 31 on SDK 34+ + return Build.VERSION.SDK_INT >= 34 && targetSdk >= 31; } }