diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index 11eb0ccefd1..deda92a103d 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -117,6 +117,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment public static final String EXTRA_VOLUME_NAME = "volumeName"; public static final String EXTRA_STORAGE_TYPE = "storageType"; public static final String EXTRA_WORK_ONLY = "workProfileOnly"; + public static final String EXTRA_WORK_ID = "workId"; private static final String EXTRA_SORT_ORDER = "sortOrder"; private static final String EXTRA_SHOW_SYSTEM = "showSystem"; @@ -222,6 +223,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment public static final int STORAGE_TYPE_LEGACY = 2; // Show apps even if they can be categorized. public static final int STORAGE_TYPE_PHOTOS_VIDEOS = 3; + private static final int NO_USER_SPECIFIED = -1; + // sort order private int mSortOrder = R.id.sort_order_alpha; @@ -282,6 +285,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment private String mVolumeUuid; private int mStorageType; private boolean mIsWorkOnly; + private int mWorkUserId; @Override public void onCreate(Bundle savedInstanceState) { @@ -338,6 +342,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment } mFilter = getDefaultFilter(); mIsWorkOnly = args != null ? args.getBoolean(EXTRA_WORK_ONLY) : false; + mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : NO_USER_SPECIFIED; if (savedInstanceState != null) { mSortOrder = savedInstanceState.getInt(EXTRA_SORT_ORDER, mSortOrder); @@ -378,13 +383,15 @@ public class ManageApplications extends InstrumentedPreferenceFragment mApplications.mHasReceivedBridgeCallback = savedInstanceState.getBoolean(EXTRA_HAS_BRIDGE, false); } + int userId = mIsWorkOnly ? mWorkUserId : UserHandle.getUserId(mCurrentUid); if (mStorageType == STORAGE_TYPE_MUSIC) { Context context = getContext(); - mApplications.setExtraViewController(new MusicViewHolderController( - context, - new StorageStatsSource(context), - mVolumeUuid, - UserHandle.of(UserHandle.getUserId(mCurrentUid)))); + mApplications.setExtraViewController( + new MusicViewHolderController( + context, + new StorageStatsSource(context), + mVolumeUuid, + UserHandle.of(userId))); } else if (mStorageType == STORAGE_TYPE_PHOTOS_VIDEOS) { Context context = getContext(); mApplications.setExtraViewController( @@ -392,7 +399,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment context, new StorageStatsSource(context), mVolumeUuid, - UserHandle.of(UserHandle.getUserId(mCurrentUid)))); + UserHandle.of(userId))); } mListView.setAdapter(mApplications); mListView.setRecyclerListener(mApplications); diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java index 163f5b9dff4..7f2cc33e291 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java @@ -20,7 +20,6 @@ import android.app.Fragment; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.net.TrafficStats; @@ -314,7 +313,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle } private Intent getPhotosIntent() { - Bundle args = new Bundle(2); + Bundle args = getWorkAnnotatedBundle(2); args.putString( ManageApplications.EXTRA_CLASSNAME, Settings.PhotosStorageActivity.class.getName()); args.putInt( @@ -336,8 +335,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle return null; } - Bundle args = new Bundle(); - args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile); + Bundle args = getWorkAnnotatedBundle(4); args.putString(ManageApplications.EXTRA_CLASSNAME, Settings.StorageUseActivity.class.getName()); args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid()); @@ -353,8 +351,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle return null; } - Bundle args = new Bundle(); - args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile); + Bundle args = getWorkAnnotatedBundle(3); args.putString(ManageApplications.EXTRA_CLASSNAME, Settings.StorageUseActivity.class.getName()); args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid()); @@ -365,8 +362,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle } private Intent getGamesIntent() { - Bundle args = new Bundle(1); - args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile); + Bundle args = getWorkAnnotatedBundle(1); args.putString(ManageApplications.EXTRA_CLASSNAME, Settings.GamesStorageActivity.class.getName()); return Utils.onBuildStartFragmentIntent(mContext, @@ -375,8 +371,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle } private Intent getMoviesIntent() { - Bundle args = new Bundle(1); - args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile); + Bundle args = getWorkAnnotatedBundle(1); args.putString(ManageApplications.EXTRA_CLASSNAME, Settings.MoviesStorageActivity.class.getName()); return Utils.onBuildStartFragmentIntent(mContext, @@ -384,6 +379,13 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle null, false, mMetricsFeatureProvider.getMetricsCategory(mFragment)); } + private Bundle getWorkAnnotatedBundle(int additionalCapacity) { + Bundle args = new Bundle(2 + additionalCapacity); + args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile); + args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId); + return args; + } + private Intent getFilesIntent() { return mSvp.findEmulatedForPrivate(mVolume).buildBrowseIntent(); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java index 9d69349f4e0..9bef5600b4a 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java @@ -16,6 +16,7 @@ package com.android.settings.deviceinfo.storage; +import static com.android.settings.applications.ManageApplications.EXTRA_WORK_ID; import static com.android.settings.applications.ManageApplications.EXTRA_WORK_ONLY; import static com.android.settings.utils.FileSizeFormatter.MEGABYTE_IN_BYTES; @@ -195,6 +196,10 @@ public class StorageItemPreferenceControllerTest { intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS) .getBoolean(EXTRA_WORK_ONLY)) .isTrue(); + assertThat( + intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS) + .getInt(EXTRA_WORK_ID)) + .isEqualTo(0); } @Test