diff --git a/src/com/android/settings/accounts/ChooseAccountPreferenceController.java b/src/com/android/settings/accounts/ChooseAccountPreferenceController.java index a217f017f99..3d05963a6b0 100644 --- a/src/com/android/settings/accounts/ChooseAccountPreferenceController.java +++ b/src/com/android/settings/accounts/ChooseAccountPreferenceController.java @@ -50,6 +50,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.StringJoiner; /** * An extra {@link UserHandle} can be specified in the intent as {@link EXTRA_USER}, if the user for @@ -189,7 +190,7 @@ public class ChooseAccountPreferenceController extends BasePreferenceController mScreen.addPreference(p); } } else { - if (Log.isLoggable(TAG, Log.VERBOSE)) { + if (mAuthorities != null && Log.isLoggable(TAG, Log.VERBOSE)) { final StringBuilder auths = new StringBuilder(); for (String a : mAuthorities) { auths.append(a); @@ -197,8 +198,14 @@ public class ChooseAccountPreferenceController extends BasePreferenceController } Log.v(TAG, "No providers found for authorities: " + auths); } + if (mAccountTypesFilter != null) { + final StringJoiner types = new StringJoiner(", ", "", ""); + mAccountTypesFilter.forEach(types::add); + Log.w(TAG, "No providers found for account types: " + types); + } mActivity.setResult(RESULT_CANCELED); - mActivity.finish(); + // Do not finish activity to avoid the caller getting the existing account list because + // the prompt respond reveals that the input account does not exist. } } diff --git a/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java index 1f457da51e9..5c4af0d78cb 100644 --- a/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java @@ -173,7 +173,7 @@ public class ChooseAccountPreferenceControllerTest { mActivity); mController.displayPreference(mPreferenceScreen); - assertThat(mActivity.isFinishing()).isTrue(); + assertThat(mActivity.isFinishing()).isFalse(); assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(0); }