diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index a47ad737c2aba..c8f5be43c04e3 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -62,6 +62,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { private final Context mContext; private int mCurrentPage; private OnProfileSelectedListener mOnProfileSelectedListener; + private OnSwitchOnWorkSelectedListener mOnSwitchOnWorkSelectedListener; private Set mLoadedPages; private final UserHandle mPersonalProfileUserHandle; private final UserHandle mWorkProfileUserHandle; @@ -124,6 +125,10 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { mOnProfileSelectedListener = listener; } + void setOnSwitchOnWorkSelectedListener(OnSwitchOnWorkSelectedListener listener) { + mOnSwitchOnWorkSelectedListener = listener; + } + Context getContext() { return mContext; } @@ -397,6 +402,9 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { ProfileDescriptor descriptor = getItem( userHandleToPageIndex(listAdapter.getUserHandle())); showSpinner(descriptor.getEmptyStateView()); + if (mOnSwitchOnWorkSelectedListener != null) { + mOnSwitchOnWorkSelectedListener.onSwitchOnWorkSelected(); + } mInjector.requestQuietModeEnabled(false, mWorkProfileUserHandle); }); return true; @@ -575,6 +583,16 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { void onProfileSelected(int profileIndex); } + /** + * Listener for when the user switches on the work profile from the work tab. + */ + interface OnSwitchOnWorkSelectedListener { + /** + * Callback for when the user switches on the work profile from the work tab. + */ + void onSwitchOnWorkSelected(); + } + /** * Describes an injector to be used for cross profile functionality. Overridable for testing. */ diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 4b5735ce34edd..182c7f272186c 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1662,6 +1662,13 @@ public class ResolverActivity extends Activity implements resetButtonBar(); resetCheckedItem(); }); + mMultiProfilePagerAdapter.setOnSwitchOnWorkSelectedListener( + () -> { + final View workTab = tabHost.getTabWidget().getChildAt(1); + workTab.setFocusable(true); + workTab.setFocusableInTouchMode(true); + workTab.requestFocus(); + }); findViewById(R.id.resolver_tab_divider).setVisibility(View.VISIBLE); }