diff options
| author | 2020-05-15 19:51:26 +0100 | |
|---|---|---|
| committer | 2020-05-20 15:29:07 +0100 | |
| commit | 77bc0f15e36674948d0d1dc896e76116cda9806d (patch) | |
| tree | ead671a427556abd47b271d081fbf54b663fa97c | |
| parent | 241f65ced5927513e9f84a56e4cdbe9e69808970 (diff) | |
Fix talkback for switch on work in ResolverActivity
Set the focus to the work tab when switch on
work profile is clicked.
Fixes: 152014143
Test: Manually tested the bug no longer happens
Change-Id: Iba72f238cdaf564256648327d12a54c6227dd23b
| -rw-r--r-- | core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java | 18 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 7 |
2 files changed, 25 insertions, 0 deletions
diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index a47ad737c2ab..c8f5be43c04e 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<Integer> 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; @@ -576,6 +584,16 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { } /** + * 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. */ @VisibleForTesting diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 83dabe8d0525..2b306980f055 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1656,6 +1656,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); } |