Launch other info in storage in correct user id.
Bug: 31592290
Change-Id: I816668c7ff9d1b443d4b49e17bdcfa39ef335aee
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index 8edf16e..1eb409b 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -467,7 +467,7 @@
// TODO: launch better intents for specific volume
final int userId = (pref instanceof StorageItemPreference ?
- ((StorageItemPreference)pref).userHandle : -1);
+ ((StorageItemPreference) pref).userHandle : -1);
int itemTitleId;
try {
itemTitleId = Integer.parseInt(pref.getKey());
@@ -512,7 +512,7 @@
}
case R.string.storage_detail_other: {
OtherInfoFragment.show(this, mStorageManager.getBestVolumeDescription(mVolume),
- mSharedVolume);
+ mSharedVolume, userId);
return true;
}
@@ -536,15 +536,9 @@
}
if (intent != null) {
- try {
- if (userId == -1) {
- startActivity(intent);
- } else {
- getActivity().startActivityAsUser(intent, new UserHandle(userId));
- }
- } catch (ActivityNotFoundException e) {
- Log.w(TAG, "No activity found for " + intent);
- }
+ intent.putExtra(Intent.EXTRA_USER_ID, userId);
+
+ launchIntent(this, intent);
return true;
}
return super.onPreferenceTreeClick(pref);
@@ -682,6 +676,20 @@
return total;
}
+ private static void launchIntent(Fragment fragment, Intent intent) {
+ try {
+ final int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, -1);
+
+ if (userId == -1) {
+ fragment.startActivity(intent);
+ } else {
+ fragment.getActivity().startActivityAsUser(intent, new UserHandle(userId));
+ }
+ } catch (ActivityNotFoundException e) {
+ Log.w(TAG, "No activity found for " + intent);
+ }
+ }
+
private final StorageEventListener mStorageListener = new StorageEventListener() {
@Override
public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState) {
@@ -768,14 +776,17 @@
}
public static class OtherInfoFragment extends DialogFragment {
- public static void show(Fragment parent, String title, VolumeInfo sharedVol) {
+ public static void show(Fragment parent, String title, VolumeInfo sharedVol, int userId) {
if (!parent.isAdded()) return;
final OtherInfoFragment dialog = new OtherInfoFragment();
dialog.setTargetFragment(parent, 0);
final Bundle args = new Bundle();
args.putString(Intent.EXTRA_TITLE, title);
- args.putParcelable(Intent.EXTRA_INTENT, sharedVol.buildBrowseIntent());
+
+ final Intent intent = sharedVol.buildBrowseIntent();
+ intent.putExtra(Intent.EXTRA_USER_ID, userId);
+ args.putParcelable(Intent.EXTRA_INTENT, intent);
dialog.setArguments(args);
dialog.show(parent.getFragmentManager(), TAG_OTHER_INFO);
}
@@ -795,7 +806,7 @@
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- startActivity(intent);
+ launchIntent(OtherInfoFragment.this, intent);
}
});
builder.setNegativeButton(android.R.string.cancel, null);