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")
|
Log.i("Received session install request for $packageName")
|
||||||
|
|
||||||
val (sessionId, session) = kotlin.runCatching {
|
val (sessionId, session) = kotlin.runCatching {
|
||||||
val sessionId =
|
val params = SessionParams(SessionParams.MODE_FULL_INSTALL)
|
||||||
packageInstaller!!.createSession(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(
|
val iSession = IPackageInstallerSession.Stub.asInterface(
|
||||||
iPackageInstaller.openSession(sessionId).asShizukuBinder()
|
iPackageInstaller.openSession(sessionId).asShizukuBinder()
|
||||||
)
|
)
|
||||||
@@ -96,4 +104,4 @@ class ShizukuInstaller(context: Context) : SessionInstallerBase(context) {
|
|||||||
xInstall(sessionId, session, packageName, files)
|
xInstall(sessionId, session, packageName, files)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user