diff options
| author | Jeff Sharkey <jsharkey@android.com> | 2012-08-28 16:23:01 -0700 |
|---|---|---|
| committer | Jeff Sharkey <jsharkey@android.com> | 2012-08-30 10:37:51 -0700 |
| commit | e217ee4d7a8223289a1af7363627c69956c46d41 (patch) | |
| tree | be3b08c713d8662be094bdabfd8b7f2beffe837f /services/java/com/android/server/am/ActivityManagerService.java | |
| parent | 08db9df1af78dbe26af89f57c5e2777e1142b566 (diff) | |
| download | frameworks_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.java | 14 |
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 |
