Build browse intents based on target user.

SystemUI runs under a single user (user 0), and needs to build
browse intents for secondary users.  To accommodate this, the safety
check recently added to buildBrowseIntent() needs to be relaxed
when building for a non-current user.

Bug: 79733193
Test: builds, boots
Change-Id: Icce014bf824d0a0ee15e3d84c34f1c2b73d213c1
This commit is contained in:
Jeff Sharkey
2018-05-22 12:01:31 -06:00
parent b138eaa7b7
commit b4ee5d7b42
2 changed files with 6 additions and 2 deletions

View File

@@ -407,8 +407,12 @@ public class VolumeInfo implements Parcelable {
* {@link #TYPE_EMULATED} or {@link #TYPE_PUBLIC}.
*/
public @Nullable Intent buildBrowseIntent() {
return buildBrowseIntentForUser(UserHandle.myUserId());
}
public @Nullable Intent buildBrowseIntentForUser(int userId) {
final Uri uri;
if (type == VolumeInfo.TYPE_PUBLIC && mountUserId == UserHandle.myUserId()) {
if (type == VolumeInfo.TYPE_PUBLIC && mountUserId == userId) {
uri = DocumentsContract.buildRootUri(DOCUMENT_AUTHORITY, fsUuid);
} else if (type == VolumeInfo.TYPE_EMULATED && isPrimary()) {
uri = DocumentsContract.buildRootUri(DOCUMENT_AUTHORITY,

View File

@@ -640,7 +640,7 @@ public class StorageNotification extends SystemUI {
}
private PendingIntent buildBrowsePendingIntent(VolumeInfo vol) {
final Intent intent = vol.buildBrowseIntent();
final Intent intent = vol.buildBrowseIntentForUser(vol.getMountUserId());
final int requestKey = vol.getId().hashCode();
return PendingIntent.getActivityAsUser(mContext, requestKey, intent,