diff options
author | Jeff Sharkey <jsharkey@android.com> | 2012-09-23 16:25:12 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2012-09-23 16:44:34 -0700 |
commit | 752cd922f7091dfd5401faf70dc248934a9dbb6d (patch) | |
tree | 687e7c87a3fa71ac84c3fc5db8327d452a7cddc3 /packages/DefaultContainerService/src/com | |
parent | 5a370882f87321629f98f6149ac946a57e25dfa8 (diff) | |
download | frameworks_base-752cd922f7091dfd5401faf70dc248934a9dbb6d.zip frameworks_base-752cd922f7091dfd5401faf70dc248934a9dbb6d.tar.gz frameworks_base-752cd922f7091dfd5401faf70dc248934a9dbb6d.tar.bz2 |
Always bind to DefaultContainerService as OWNER.
When PackageManagerService deals with external storage, always bind
to DefaultContainerService as USER_OWNER. This avoids binding to a
stopped user, which would fail.
Bug: 7203111
Change-Id: I8e303c7558e8b5cbe4fea0acc9a472b598df0caa
Diffstat (limited to 'packages/DefaultContainerService/src/com')
-rw-r--r-- | packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index b36bd55..24a9d71 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -35,6 +35,7 @@ import android.content.res.ObbInfo; import android.content.res.ObbScanner; import android.net.Uri; import android.os.Environment; +import android.os.Environment.UserEnvironment; import android.os.FileUtils; import android.os.IBinder; import android.os.ParcelFileDescriptor; @@ -268,15 +269,16 @@ public class DefaultContainerService extends IntentService { @Override protected void onHandleIntent(Intent intent) { if (PackageManager.ACTION_CLEAN_EXTERNAL_STORAGE.equals(intent.getAction())) { - IPackageManager pm = IPackageManager.Stub.asInterface( + final IPackageManager pm = IPackageManager.Stub.asInterface( ServiceManager.getService("package")); - PackageCleanItem pkg = null; + PackageCleanItem item = null; try { - while ((pkg=pm.nextPackageToClean(pkg)) != null) { - eraseFiles(Environment.getExternalStorageAppDataDirectory(pkg.packageName)); - eraseFiles(Environment.getExternalStorageAppMediaDirectory(pkg.packageName)); - if (pkg.andCode) { - eraseFiles(Environment.getExternalStorageAppObbDirectory(pkg.packageName)); + while ((item = pm.nextPackageToClean(item)) != null) { + final UserEnvironment userEnv = new UserEnvironment(item.userId); + eraseFiles(userEnv.getExternalStorageAppDataDirectory(item.packageName)); + eraseFiles(userEnv.getExternalStorageAppMediaDirectory(item.packageName)); + if (item.andCode) { + eraseFiles(userEnv.getExternalStorageAppObbDirectory(item.packageName)); } } } catch (RemoteException e) { |