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 {