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 <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-08-11 17:46:30 +05:30
parent b6231ff68d
commit 213bf98ffb

View File

@@ -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<PackageInstallerHidden.SessionParamsHidden>(params).installFlags
flags = flags or PackageManagerHidden.INSTALL_REPLACE_EXISTING
Refine.unsafeCast<PackageInstallerHidden.SessionParamsHidden>(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)
}
}
}
}