Installing packages always needs to create dirs.
When we're installing an existing app for a user, we still need to
create the private data storage for that app.
Bug: 26554043
Change-Id: Ie18e0952600f860325718f84094aedeac3681403
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index f777faf..c1cba97 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -10216,7 +10216,7 @@
long callingId = Binder.clearCallingIdentity();
try {
- boolean sendAdded = false;
+ boolean installed = false;
// writer
synchronized (mPackages) {
@@ -10228,11 +10228,21 @@
pkgSetting.setInstalled(true, userId);
pkgSetting.setHidden(false, userId);
mSettings.writePackageRestrictionsLPr(userId);
- sendAdded = true;
+ installed = true;
}
}
- if (sendAdded) {
+ if (installed) {
+ synchronized (mInstallLock) {
+ final int flags = Installer.FLAG_DE_STORAGE | Installer.FLAG_CE_STORAGE;
+ try {
+ mInstaller.createAppData(pkgSetting.volumeUuid, packageName, userId, flags,
+ pkgSetting.appId, pkgSetting.pkg.applicationInfo.seinfo);
+ } catch (InstallerException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
sendPackageAddedForUser(packageName, pkgSetting, userId);
}
} finally {