Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +13 −10 Original line number Diff line number Diff line Loading @@ -606,8 +606,8 @@ final class InstallPackageHelper { Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } public int installExistingPackageAsUser(@Nullable String packageName, @UserIdInt int userId, @PackageManager.InstallFlags int installFlags, public Pair<Integer, IntentSender> installExistingPackageAsUser(@Nullable String packageName, @UserIdInt int userId, @PackageManager.InstallFlags int installFlags, @PackageManager.InstallReason int installReason, @Nullable List<String> allowlistedRestrictedPermissions, @Nullable IntentSender intentSender) { Loading @@ -632,7 +632,7 @@ final class InstallPackageHelper { true /* requireFullPermission */, true /* checkShell */, "installExistingPackage for user " + userId); if (mPm.isUserRestricted(userId, UserManager.DISALLOW_INSTALL_APPS)) { return PackageManager.INSTALL_FAILED_USER_RESTRICTED; return Pair.create(PackageManager.INSTALL_FAILED_USER_RESTRICTED, intentSender); } final long callingId = Binder.clearCallingIdentity(); Loading @@ -648,7 +648,7 @@ final class InstallPackageHelper { final Computer snapshot = mPm.snapshotComputer(); pkgSetting = mPm.mSettings.getPackageLPr(packageName); if (pkgSetting == null || pkgSetting.getPkg() == null) { return PackageManager.INSTALL_FAILED_INVALID_URI; return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender); } if (!snapshot.canViewInstantApps(callingUid, UserHandle.getUserId(callingUid))) { // only allow the existing package to be used if it's installed as a full Loading @@ -661,7 +661,7 @@ final class InstallPackageHelper { } } if (!installAllowed) { return PackageManager.INSTALL_FAILED_INVALID_URI; return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender); } } if (!pkgSetting.getInstalled(userId)) { Loading Loading @@ -719,14 +719,17 @@ final class InstallPackageHelper { } // start async restore with no post-install since we finish install here final IntentSender onCompleteSender = intentSender; intentSender = null; InstallRequest request = new InstallRequest(userId, PackageManager.INSTALL_SUCCEEDED, pkgSetting.getPkg(), new int[]{ userId }, () -> { mPm.restorePermissionsAndUpdateRolesForNewUserInstall(packageName, userId); if (intentSender != null) { onRestoreComplete(PackageManager.INSTALL_SUCCEEDED, mContext, intentSender); if (onCompleteSender != null) { onInstallComplete(PackageManager.INSTALL_SUCCEEDED, mContext, onCompleteSender); } }); restoreAndPostInstall(request); Loading @@ -735,10 +738,10 @@ final class InstallPackageHelper { Binder.restoreCallingIdentity(callingId); } return PackageManager.INSTALL_SUCCEEDED; return Pair.create(PackageManager.INSTALL_SUCCEEDED, intentSender); } private static void onRestoreComplete(int returnCode, Context context, IntentSender target) { static void onInstallComplete(int returnCode, Context context, IntentSender target) { Intent fillIn = new Intent(); fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageManager.installStatusToPublicStatus(returnCode)); Loading services/core/java/com/android/server/pm/PackageInstallerService.java +9 −2 Original line number Diff line number Diff line Loading @@ -1293,8 +1293,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements public void installExistingPackage(String packageName, int installFlags, int installReason, IntentSender statusReceiver, int userId, List<String> allowListedPermissions) { final InstallPackageHelper installPackageHelper = new InstallPackageHelper(mPm); installPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags, installReason, allowListedPermissions, statusReceiver); var result = installPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags, installReason, allowListedPermissions, statusReceiver); int returnCode = result.first; IntentSender onCompleteSender = result.second; if (onCompleteSender != null) { InstallPackageHelper.onInstallComplete(returnCode, mContext, onCompleteSender); } } @Override Loading services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -5350,7 +5350,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService public int installExistingPackageAsUser(String packageName, int userId, int installFlags, int installReason, List<String> whiteListedPermissions) { return mInstallPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags, installReason, whiteListedPermissions, null); installReason, whiteListedPermissions, null).first; } @Override Loading Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +13 −10 Original line number Diff line number Diff line Loading @@ -606,8 +606,8 @@ final class InstallPackageHelper { Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } public int installExistingPackageAsUser(@Nullable String packageName, @UserIdInt int userId, @PackageManager.InstallFlags int installFlags, public Pair<Integer, IntentSender> installExistingPackageAsUser(@Nullable String packageName, @UserIdInt int userId, @PackageManager.InstallFlags int installFlags, @PackageManager.InstallReason int installReason, @Nullable List<String> allowlistedRestrictedPermissions, @Nullable IntentSender intentSender) { Loading @@ -632,7 +632,7 @@ final class InstallPackageHelper { true /* requireFullPermission */, true /* checkShell */, "installExistingPackage for user " + userId); if (mPm.isUserRestricted(userId, UserManager.DISALLOW_INSTALL_APPS)) { return PackageManager.INSTALL_FAILED_USER_RESTRICTED; return Pair.create(PackageManager.INSTALL_FAILED_USER_RESTRICTED, intentSender); } final long callingId = Binder.clearCallingIdentity(); Loading @@ -648,7 +648,7 @@ final class InstallPackageHelper { final Computer snapshot = mPm.snapshotComputer(); pkgSetting = mPm.mSettings.getPackageLPr(packageName); if (pkgSetting == null || pkgSetting.getPkg() == null) { return PackageManager.INSTALL_FAILED_INVALID_URI; return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender); } if (!snapshot.canViewInstantApps(callingUid, UserHandle.getUserId(callingUid))) { // only allow the existing package to be used if it's installed as a full Loading @@ -661,7 +661,7 @@ final class InstallPackageHelper { } } if (!installAllowed) { return PackageManager.INSTALL_FAILED_INVALID_URI; return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender); } } if (!pkgSetting.getInstalled(userId)) { Loading Loading @@ -719,14 +719,17 @@ final class InstallPackageHelper { } // start async restore with no post-install since we finish install here final IntentSender onCompleteSender = intentSender; intentSender = null; InstallRequest request = new InstallRequest(userId, PackageManager.INSTALL_SUCCEEDED, pkgSetting.getPkg(), new int[]{ userId }, () -> { mPm.restorePermissionsAndUpdateRolesForNewUserInstall(packageName, userId); if (intentSender != null) { onRestoreComplete(PackageManager.INSTALL_SUCCEEDED, mContext, intentSender); if (onCompleteSender != null) { onInstallComplete(PackageManager.INSTALL_SUCCEEDED, mContext, onCompleteSender); } }); restoreAndPostInstall(request); Loading @@ -735,10 +738,10 @@ final class InstallPackageHelper { Binder.restoreCallingIdentity(callingId); } return PackageManager.INSTALL_SUCCEEDED; return Pair.create(PackageManager.INSTALL_SUCCEEDED, intentSender); } private static void onRestoreComplete(int returnCode, Context context, IntentSender target) { static void onInstallComplete(int returnCode, Context context, IntentSender target) { Intent fillIn = new Intent(); fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageManager.installStatusToPublicStatus(returnCode)); Loading
services/core/java/com/android/server/pm/PackageInstallerService.java +9 −2 Original line number Diff line number Diff line Loading @@ -1293,8 +1293,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements public void installExistingPackage(String packageName, int installFlags, int installReason, IntentSender statusReceiver, int userId, List<String> allowListedPermissions) { final InstallPackageHelper installPackageHelper = new InstallPackageHelper(mPm); installPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags, installReason, allowListedPermissions, statusReceiver); var result = installPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags, installReason, allowListedPermissions, statusReceiver); int returnCode = result.first; IntentSender onCompleteSender = result.second; if (onCompleteSender != null) { InstallPackageHelper.onInstallComplete(returnCode, mContext, onCompleteSender); } } @Override Loading
services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -5350,7 +5350,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService public int installExistingPackageAsUser(String packageName, int userId, int installFlags, int installReason, List<String> whiteListedPermissions) { return mInstallPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags, installReason, whiteListedPermissions, null); installReason, whiteListedPermissions, null).first; } @Override Loading