Avoid skipping creation of emulated volume for cloned profile user

As of now, emulated volume is not getting created for the user if media
provider instance is not running in that user space. But, in case of
cloned profile user, where media provider instance is not running and
media queries get redirected to the owner user space, we need to
facilitate the creation of emulated volume. This CL takes care of this
usecase.

Bug: 197310110
Test: manual on Pixel5
Change-Id: I52cd40ed47df84a71c9c17cb2b51dc4a23d0d56d
This commit is contained in:
Himanshu Dagar
2021-09-10 09:49:01 +00:00
parent b55b8667e3
commit a1798ca960

View File

@@ -1541,7 +1541,18 @@ class StorageManagerService extends IStorageManager.Stub
}
if (vol.type == VolumeInfo.TYPE_EMULATED) {
if (!mStorageSessionController.supportsExternalStorage(vol.mountUserId)) {
final Context volumeUserContext = mContext.createContextAsUser(
UserHandle.of(vol.mountUserId), 0);
boolean isMediaSharedWithParent =
(volumeUserContext != null) ? volumeUserContext.getSystemService(
UserManager.class).isMediaSharedWithParent() : false;
// For all the users where media is shared with parent, creation of emulated volume
// should not be skipped even if media provider instance is not running in that user
// space
if (!isMediaSharedWithParent
&& !mStorageSessionController.supportsExternalStorage(vol.mountUserId)) {
Slog.d(TAG, "Ignoring volume " + vol.getId() + " because user "
+ Integer.toString(vol.mountUserId)
+ " does not support external storage.");