From 300c13a48132f03d48462b9cd3ec41331a71a411 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Tue, 18 Jan 2011 13:04:40 -0800 Subject: Erase OBB files when removing packages OBB files on USB storage or SD card should be removed when an application is removed. Bug: 3356804 Change-Id: Ifbbf043368b125fcd47fd74e5cd2e5167a8deb00 --- .../com/android/defcontainer/DefaultContainerService.java | 1 + .../java/com/android/server/PackageManagerService.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index 2ec222651436..21f77e366830 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -190,6 +190,7 @@ public class DefaultContainerService extends IntentService { while ((pkg=pm.nextPackageToClean(pkg)) != null) { eraseFiles(Environment.getExternalStorageAppDataDirectory(pkg)); eraseFiles(Environment.getExternalStorageAppMediaDirectory(pkg)); + eraseFiles(Environment.getExternalStorageAppObbDirectory(pkg)); } } catch (RemoteException e) { } diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 1eebd6aa361b..059c0b86410a 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -4407,10 +4407,19 @@ class PackageManagerService extends IPackageManager.Stub { } } } - + + /** + * Check if the external storage media is available. This is true if there + * is a mounted external storage medium or if the external storage is + * emulated. + */ + private boolean isExternalMediaAvailable() { + return mMediaMounted || Environment.isExternalStorageEmulated(); + } + public String nextPackageToClean(String lastPackage) { synchronized (mPackages) { - if (!mMediaMounted) { + if (!isExternalMediaAvailable()) { // If the external storage is no longer mounted at this point, // the caller may not have been able to delete all of this // packages files and can not delete any more. Bail. @@ -4430,7 +4439,7 @@ class PackageManagerService extends IPackageManager.Stub { void startCleaningPackages() { synchronized (mPackages) { - if (!mMediaMounted) { + if (!isExternalMediaAvailable()) { return; } if (mSettings.mPackagesToBeCleaned.size() <= 0) { -- cgit v1.2.3-59-g8ed1b