From 910ea66615097584efb2735f40617252ea3f3654 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Wed, 4 Dec 2019 10:56:43 +0800 Subject: [PATCH] Navigate to personal/work tab based on intent extra Bug: 141601408 Test: Settings->Storage, click work tab, click Other apps. It should navigate to Apps storage page and focus on WORK tab. Change-Id: Ida91b279e771a2c7c960ce83b8e13310c87112e8 --- src/com/android/settings/SettingsActivity.java | 8 ++++++++ .../profileselector/ProfileSelectFragment.java | 15 +++++++++++++++ .../storage/StorageItemPreferenceController.java | 8 ++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 70536c03a6e..de08df28137 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -135,6 +135,14 @@ public class SettingsActivity extends SettingsBaseActivity public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = ":settings:show_fragment_as_subsetting"; + /** + * Personal or Work profile tab of {@link ProfileSelectFragment} + *

0: Personal tab. + *

1: Work profile tab. + */ + public static final String EXTRA_SHOW_FRAGMENT_TAB = + ":settings:show_fragment_tab"; + public static final String META_DATA_KEY_FRAGMENT_CLASS = "com.android.settings.FRAGMENT_CLASS"; diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java index aee79822252..7a35aa6037c 100644 --- a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java +++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java @@ -31,6 +31,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; @@ -74,12 +75,23 @@ public abstract class ProfileSelectFragment extends DashboardFragment { */ public static final String EXTRA_PROFILE = "profile"; + /** + * Used in fragment argument with Extra key {@link SettingsActivity.EXTRA_SHOW_FRAGMENT_TAB} + */ + public static final int PERSONAL_TAB = 0; + + /** + * Used in fragment argument with Extra key {@link SettingsActivity.EXTRA_SHOW_FRAGMENT_TAB} + */ + public static final int WORK_TAB = 1; + private ViewGroup mContentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mContentView = (ViewGroup) super.onCreateView(inflater, container, savedInstanceState); + final int selected = getArguments().getInt(SettingsActivity.EXTRA_SHOW_FRAGMENT_TAB, 0); final View tabContainer = mContentView.findViewById(R.id.tab_container); final ViewPager viewPager = tabContainer.findViewById(R.id.view_pager); @@ -87,6 +99,8 @@ public abstract class ProfileSelectFragment extends DashboardFragment { final TabLayout tabs = tabContainer.findViewById(R.id.tabs); tabs.setupWithViewPager(viewPager); tabContainer.setVisibility(View.VISIBLE); + final TabLayout.Tab tab = tabs.getTabAt(selected); + tab.select(); final FrameLayout listContainer = mContentView.findViewById(android.R.id.list_container); listContainer.setLayoutParams(new LinearLayout.LayoutParams( @@ -96,6 +110,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment { final RecyclerView recyclerView = getListView(); recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER); Utils.setActionBarShadowAnimation(getActivity(), getSettingsLifecycle(), recyclerView); + return mContentView; } diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java index 26039fbab3b..164eca775cc 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java @@ -16,6 +16,9 @@ package com.android.settings.deviceinfo.storage; +import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.PERSONAL_TAB; +import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.WORK_TAB; + import android.app.settings.SettingsEnums; import android.content.ActivityNotFoundException; import android.content.Context; @@ -37,6 +40,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.Settings; +import com.android.settings.SettingsActivity; import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.core.FeatureFlags; import com.android.settings.core.PreferenceControllerMixin; @@ -394,8 +398,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle private Bundle getWorkAnnotatedBundle(int additionalCapacity) { if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.PERSONAL_WORK_PROFILE)) { final Bundle args = new Bundle(2 + additionalCapacity); - args.putInt(ProfileSelectFragment.EXTRA_PROFILE, - mIsWorkProfile ? ProfileSelectFragment.WORK : ProfileSelectFragment.PERSONAL); + args.putInt(SettingsActivity.EXTRA_SHOW_FRAGMENT_TAB, + mIsWorkProfile ? WORK_TAB : PERSONAL_TAB); args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId); return args; } else {