Check for valid paths when getVolumeList() returns invisible volumes.

The FLAG_INCLUDE_INVISIBLE was created to let SM.getStorageVolumes()
return mounted volumes (like USB drives), but in the current form it
might return invalid volumes. For example, when a SD Card is adopted as
an internal storage, it will return 2 volumes instead of one, the "bad"
one being:

VolumeInfo{emulated}:
     type=EMULATED diskId=null partGuid=null mountFlags=0 mountUserId=-1
     state=UNMOUNTED
     fsType=null fsUuid=null fsLabel=null
     path=null internalPath=null

As such, we need to filter out those volumes that don't have a path.

BUG: 29250241
Change-Id: I3f84b53eac98f31f918d843c70f9d42983e2a438
This commit is contained in:
Felipe Leme
2016-06-10 11:09:11 -07:00
parent 9b5a780722
commit 123a0e712e

View File

@@ -3031,7 +3031,8 @@ class MountService extends IMountService.Stub
if (forWrite) {
match = vol.isVisibleForWrite(userId);
} else {
match = vol.isVisibleForRead(userId) || includeInvisible;
match = vol.isVisibleForRead(userId)
|| (includeInvisible && vol.getPath() != null);
}
if (!match) continue;