Don't send session committed broadcast for dry runs
For staged installs, pre-reboot verification performs a dry run install.
Since this dry run install is non-staged, the session committed
broadcast will be sent, in some cases causing app icons to
erroneously appear. Add check for this case.
Test: Inspect SESSION_COMMITTED broadcasts sent for a staged install
with and without this patch
Bug: 139663018
Change-Id: Ib0ba29a4506cda8da1865926ae62b137e1dce8ff
This commit is contained in:
@@ -2186,8 +2186,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
|
||||
final boolean success = (returnCode == PackageManager.INSTALL_SUCCEEDED);
|
||||
|
||||
// Send broadcast to default launcher only if it's a new install
|
||||
// TODO(b/144270665): Secure the usage of this broadcast.
|
||||
final boolean isNewInstall = extras == null || !extras.getBoolean(Intent.EXTRA_REPLACING);
|
||||
if (success && isNewInstall && mPm.mInstallerService.okToSendBroadcasts()) {
|
||||
if (success && isNewInstall && mPm.mInstallerService.okToSendBroadcasts()
|
||||
&& (params.installFlags & PackageManager.INSTALL_DRY_RUN) == 0) {
|
||||
mPm.sendSessionCommitBroadcast(generateInfo(), userId);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user