summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kenny Root <kroot@google.com> 2012-08-09 13:36:16 -0700
committer Kenny Root <kroot@google.com> 2012-08-13 10:51:09 -0700
commit438a0efcfbee5dc953e8e5bbdf4cb3dbe94b3f80 (patch)
treed3490b8f71bf399772fd94cd87719625fd447b50
parentea31b47a72a6fed1269e2ba3c29c438212322bf0 (diff)
Do not eject internal ASECs when storage unmounted
If the incoming request is to notify of storage unmounted, don't mess with apps that are in internal ASECs. Bug: 6948035 Change-Id: I63ffb895c4d994ee03a5a9bd6bb23f69c88e2a87
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 3501e4791265..75b3f0486b10 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -8833,7 +8833,7 @@ public class PackageManagerService extends IPackageManager.Stub {
// little while.
mHandler.post(new Runnable() {
public void run() {
- updateExternalMediaStatusInner(mediaStatus, reportStatus);
+ updateExternalMediaStatusInner(mediaStatus, reportStatus, true);
}
});
}
@@ -8843,7 +8843,7 @@ public class PackageManagerService extends IPackageManager.Stub {
* Should block until all the ASEC containers are finished being scanned.
*/
public void scanAvailableAsecs() {
- updateExternalMediaStatusInner(true, false);
+ updateExternalMediaStatusInner(true, false, false);
}
/*
@@ -8852,7 +8852,8 @@ public class PackageManagerService extends IPackageManager.Stub {
* Please note that we always have to report status if reportStatus has been
* set to true especially when unloading packages.
*/
- private void updateExternalMediaStatusInner(boolean isMounted, boolean reportStatus) {
+ private void updateExternalMediaStatusInner(boolean isMounted, boolean reportStatus,
+ boolean externalStorage) {
// Collection of uids
int uidArr[] = null;
// Collection of stale containers
@@ -8890,6 +8891,14 @@ public class PackageManagerService extends IPackageManager.Stub {
continue;
}
+ /*
+ * Skip packages that are not external if we're unmounting
+ * external storage.
+ */
+ if (externalStorage && !isMounted && !isExternal(ps)) {
+ continue;
+ }
+
final AsecInstallArgs args = new AsecInstallArgs(cid, isForwardLocked(ps));
// The package status is changed only if the code path
// matches between settings and the container id.