Loading services/core/java/com/android/server/StorageManagerService.java +14 −9 Original line number Diff line number Diff line Loading @@ -3584,6 +3584,13 @@ class StorageManagerService extends IStorageManager.Stub final boolean includeSharedProfile = (flags & StorageManager.FLAG_INCLUDE_SHARED_PROFILE) != 0; // When the caller is the app actually hosting external storage, we // should never attempt to augment the actual storage volume state, // otherwise we risk confusing it with race conditions as users go // through various unlocked states final boolean callerIsMediaStore = UserHandle.isSameApp(callingUid, mMediaStoreAuthorityAppId); // Only Apps with MANAGE_EXTERNAL_STORAGE should call the API with includeSharedProfile if (includeSharedProfile) { try { Loading @@ -3596,7 +3603,12 @@ class StorageManagerService extends IStorageManager.Stub // Checking first entry in packagesFromUid is enough as using "sharedUserId" // mechanism is rare and discouraged. Also, Apps that share same UID share the same // permissions. if (!mStorageManagerInternal.hasExternalStorageAccess(callingUid, // Allowing Media Provider is an exception, Media Provider process should be allowed // to query users across profiles, even without MANAGE_EXTERNAL_STORAGE access. // Note that ordinarily Media provider process has the above permission, but if they // are revoked, Storage Volume(s) should still be returned. if (!callerIsMediaStore && !mStorageManagerInternal.hasExternalStorageAccess(callingUid, packagesFromUid[0])) { throw new SecurityException("Only File Manager Apps permitted"); } Loading @@ -3610,13 +3622,6 @@ class StorageManagerService extends IStorageManager.Stub // point final boolean systemUserUnlocked = isSystemUnlocked(UserHandle.USER_SYSTEM); // When the caller is the app actually hosting external storage, we // should never attempt to augment the actual storage volume state, // otherwise we risk confusing it with race conditions as users go // through various unlocked states final boolean callerIsMediaStore = UserHandle.isSameApp(callingUid, mMediaStoreAuthorityAppId); final boolean userIsDemo; final boolean userKeyUnlocked; final boolean storagePermission; Loading Loading
services/core/java/com/android/server/StorageManagerService.java +14 −9 Original line number Diff line number Diff line Loading @@ -3584,6 +3584,13 @@ class StorageManagerService extends IStorageManager.Stub final boolean includeSharedProfile = (flags & StorageManager.FLAG_INCLUDE_SHARED_PROFILE) != 0; // When the caller is the app actually hosting external storage, we // should never attempt to augment the actual storage volume state, // otherwise we risk confusing it with race conditions as users go // through various unlocked states final boolean callerIsMediaStore = UserHandle.isSameApp(callingUid, mMediaStoreAuthorityAppId); // Only Apps with MANAGE_EXTERNAL_STORAGE should call the API with includeSharedProfile if (includeSharedProfile) { try { Loading @@ -3596,7 +3603,12 @@ class StorageManagerService extends IStorageManager.Stub // Checking first entry in packagesFromUid is enough as using "sharedUserId" // mechanism is rare and discouraged. Also, Apps that share same UID share the same // permissions. if (!mStorageManagerInternal.hasExternalStorageAccess(callingUid, // Allowing Media Provider is an exception, Media Provider process should be allowed // to query users across profiles, even without MANAGE_EXTERNAL_STORAGE access. // Note that ordinarily Media provider process has the above permission, but if they // are revoked, Storage Volume(s) should still be returned. if (!callerIsMediaStore && !mStorageManagerInternal.hasExternalStorageAccess(callingUid, packagesFromUid[0])) { throw new SecurityException("Only File Manager Apps permitted"); } Loading @@ -3610,13 +3622,6 @@ class StorageManagerService extends IStorageManager.Stub // point final boolean systemUserUnlocked = isSystemUnlocked(UserHandle.USER_SYSTEM); // When the caller is the app actually hosting external storage, we // should never attempt to augment the actual storage volume state, // otherwise we risk confusing it with race conditions as users go // through various unlocked states final boolean callerIsMediaStore = UserHandle.isSameApp(callingUid, mMediaStoreAuthorityAppId); final boolean userIsDemo; final boolean userKeyUnlocked; final boolean storagePermission; Loading