@@ -56,7 +56,7 @@ public abstract class PackageInstallerProxy protected constructor(
5656
5757 private val installParameters = ConcurrentHashMap <UUID , PrivilegedInstallParameters >()
5858 private val uninstallParameters = ConcurrentHashMap <UUID , PrivilegedUninstallParameters >()
59- private val packageInstallers = ConcurrentHashMap <Int , PackageInstaller >()
59+ private val packageInstallers = ConcurrentHashMap <PackageInstallerKey , PackageInstaller >()
6060 private val packageInstallerLocks = Locks (16 )
6161
6262 final override fun bind (sessionId : UUID ): PackageInstallerService {
@@ -71,7 +71,8 @@ public abstract class PackageInstallerProxy protected constructor(
7171 } else {
7272 targetUser.userId
7373 }
74- val packageInstaller = packageInstallers.computeIfAbsentCompat(resolvedUserId, packageInstallerLocks) {
74+ val key = PackageInstallerKey (resolvedUserId, installerPackageName)
75+ val packageInstaller = packageInstallers.computeIfAbsentCompat(key, packageInstallerLocks) {
7576 createPackageInstaller(context, remotePackageInstaller, installerPackageName, resolvedUserId)
7677 }
7778 return BoundPackageInstaller (packageInstaller!! , resolvedUserId, installerPackageName)
@@ -113,6 +114,8 @@ public abstract class PackageInstallerProxy protected constructor(
113114 " PackageInstallerService must be bound to an Ackpine session before use"
114115 )
115116
117+ private data class PackageInstallerKey (val userId : Int , val installerPackageName : String )
118+
116119 private inner class BoundPackageInstaller (
117120 private val packageInstaller : PackageInstaller ,
118121 private val userId : Int ,
0 commit comments