From 213bf98ffb909cf08688de8b099ff288485cba03 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 11 Aug 2023 17:46:30 +0530 Subject: [PATCH] ShizukuInstaller: Allow replacing existing app during updates Ref: https://android.googlesource.com/platform/frameworks/base/+/main/core/java/android/content/pm/PackageManager.java#1377 Signed-off-by: Aayush Gupta --- .../store/data/installer/ShizukuInstaller.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt index 434c1e638..88c05d0a7 100644 --- a/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt @@ -73,8 +73,16 @@ class ShizukuInstaller(context: Context) : SessionInstallerBase(context) { Log.i("Received session install request for $packageName") val (sessionId, session) = kotlin.runCatching { - val sessionId = - packageInstaller!!.createSession(SessionParams(SessionParams.MODE_FULL_INSTALL)) + val params = SessionParams(SessionParams.MODE_FULL_INSTALL) + + // Replace existing app (Updates) + var flags = Refine + .unsafeCast(params).installFlags + flags = flags or PackageManagerHidden.INSTALL_REPLACE_EXISTING + Refine.unsafeCast(params).installFlags = + flags + + val sessionId = packageInstaller!!.createSession(params) val iSession = IPackageInstallerSession.Stub.asInterface( iPackageInstaller.openSession(sessionId).asShizukuBinder() ) @@ -96,4 +104,4 @@ class ShizukuInstaller(context: Context) : SessionInstallerBase(context) { xInstall(sessionId, session, packageName, files) } } -} \ No newline at end of file +}