summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am/ActivityManagerService.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2012-08-28 16:23:01 -0700
committerJeff Sharkey <jsharkey@android.com>2012-08-30 10:37:51 -0700
commite217ee4d7a8223289a1af7363627c69956c46d41 (patch)
treebe3b08c713d8662be094bdabfd8b7f2beffe837f /services/java/com/android/server/am/ActivityManagerService.java
parent08db9df1af78dbe26af89f57c5e2777e1142b566 (diff)
downloadframeworks_base-e217ee4d7a8223289a1af7363627c69956c46d41.zip
frameworks_base-e217ee4d7a8223289a1af7363627c69956c46d41.tar.gz
frameworks_base-e217ee4d7a8223289a1af7363627c69956c46d41.tar.bz2
Access to all users' external storage.
System services holding this permission have external storage bound one level higher, giving them access to all users' files. Bug: 7003520 Change-Id: Ib2bcb8455740c713ebd01f71c9a2b89b4e642832
Diffstat (limited to 'services/java/com/android/server/am/ActivityManagerService.java')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 20be15e..a061d58 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -1991,13 +1991,19 @@ public final class ActivityManagerService extends ActivityManagerNative
try {
final PackageManager pm = mContext.getPackageManager();
gids = pm.getPackageGids(app.info.packageName);
+
+ if (Environment.isExternalStorageEmulated()) {
+ if (pm.checkPermission(
+ android.Manifest.permission.ACCESS_ALL_EXTERNAL_STORAGE,
+ app.info.packageName) == PERMISSION_GRANTED) {
+ mountExternal = Zygote.MOUNT_EXTERNAL_MULTIUSER_ALL;
+ } else {
+ mountExternal = Zygote.MOUNT_EXTERNAL_MULTIUSER;
+ }
+ }
} catch (PackageManager.NameNotFoundException e) {
Slog.w(TAG, "Unable to retrieve gids", e);
}
-
- if (Environment.isExternalStorageEmulated()) {
- mountExternal = Zygote.MOUNT_EXTERNAL_MULTIUSER;
- }
}
if (mFactoryTest != SystemServer.FACTORY_TEST_OFF) {
if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL