diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index 18d77386d063b..38ec4cbf3c668 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -389,6 +389,8 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { Button button = emptyStateView.findViewById(R.id.resolver_empty_state_button); button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE); button.setOnClickListener(buttonOnClick); + + activeListAdapter.markTabLoaded(); } private void showSpinner(View emptyStateView) { diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index bd7b47d853d29..c0ee8985b45ff 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1337,9 +1337,12 @@ public class ResolverActivity extends Activity implements + "cannot be null."); } // We partially rebuild the inactive adapter to determine if we should auto launch - boolean rebuildCompleted = mMultiProfilePagerAdapter.rebuildActiveTab(true); + // isTabLoaded will be true here if the empty state screen is shown instead of the list. + boolean rebuildCompleted = mMultiProfilePagerAdapter.rebuildActiveTab(true) + || mMultiProfilePagerAdapter.getActiveListAdapter().isTabLoaded(); if (shouldShowTabs()) { - boolean rebuildInactiveCompleted = mMultiProfilePagerAdapter.rebuildInactiveTab(false); + boolean rebuildInactiveCompleted = mMultiProfilePagerAdapter.rebuildInactiveTab(false) + || mMultiProfilePagerAdapter.getInactiveListAdapter().isTabLoaded(); rebuildCompleted = rebuildCompleted && rebuildInactiveCompleted; } @@ -1399,8 +1402,8 @@ public class ResolverActivity extends Activity implements if (numberOfProfiles == 1 && maybeAutolaunchIfSingleTarget()) { return true; } else if (numberOfProfiles == 2 - && mMultiProfilePagerAdapter.getActiveListAdapter().isListLoaded() - && mMultiProfilePagerAdapter.getInactiveListAdapter().isListLoaded() + && mMultiProfilePagerAdapter.getActiveListAdapter().isTabLoaded() + && mMultiProfilePagerAdapter.getInactiveListAdapter().isTabLoaded() && (maybeAutolaunchIfNoAppsOnInactiveTab() || maybeAutolaunchIfCrossProfileSupported())) { return true; diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java index 54453d0d0f465..61a404e3bc5fe 100644 --- a/core/java/com/android/internal/app/ResolverListAdapter.java +++ b/core/java/com/android/internal/app/ResolverListAdapter.java @@ -87,7 +87,7 @@ public class ResolverListAdapter extends BaseAdapter { private final ResolverListCommunicator mResolverListCommunicator; private Runnable mPostListReadyRunnable; private final boolean mIsAudioCaptureDevice; - private boolean mIsListLoaded; + private boolean mIsTabLoaded; public ResolverListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, @@ -192,7 +192,7 @@ public class ResolverListAdapter extends BaseAdapter { mLastChosenPosition = -1; mAllTargetsAreBrowsers = false; mDisplayList.clear(); - mIsListLoaded = false; + mIsTabLoaded = false; if (mBaseResolveList != null) { currentResolveList = mUnfilteredResolveList = new ArrayList<>(); @@ -354,7 +354,7 @@ public class ResolverListAdapter extends BaseAdapter { mResolverListCommunicator.sendVoiceChoicesIfNeeded(); postListReadyRunnable(doPostProcessing); - mIsListLoaded = true; + mIsTabLoaded = true; } /** @@ -614,8 +614,12 @@ public class ResolverListAdapter extends BaseAdapter { return mIntents; } - protected boolean isListLoaded() { - return mIsListLoaded; + protected boolean isTabLoaded() { + return mIsTabLoaded; + } + + protected void markTabLoaded() { + mIsTabLoaded = true; } /**