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:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user