From 5a3915b06bf1e82cda024945d3b71b51b470b809 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 24 May 2013 09:53:47 -0700 Subject: [PATCH] UX compliance for error messages Bug: 9122154 Change-Id: I4a64750f11845a230321450bc6a2955cb73e3b6d --- .../ChooseTypeAndAccountActivity.java | 19 ++++++++++++++----- core/res/AndroidManifest.xml | 3 +-- core/res/res/values/strings.xml | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/java/android/accounts/ChooseTypeAndAccountActivity.java b/core/java/android/accounts/ChooseTypeAndAccountActivity.java index 58eb66f8d3900..82c2159d25f47 100644 --- a/core/java/android/accounts/ChooseTypeAndAccountActivity.java +++ b/core/java/android/accounts/ChooseTypeAndAccountActivity.java @@ -29,6 +29,7 @@ import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import android.view.View; +import android.view.Window; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; @@ -127,6 +128,7 @@ public class ChooseTypeAndAccountActivity extends Activity private int mCallingUid; private String mCallingPackage; private boolean mDisallowAddAccounts; + private boolean mDontShowPicker; @Override public void onCreate(Bundle savedInstanceState) { @@ -189,11 +191,23 @@ public class ChooseTypeAndAccountActivity extends Activity mSetOfRelevantAccountTypes = getReleventAccountTypes(intent); mAlwaysPromptForAccount = intent.getBooleanExtra(EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT, false); mDescriptionOverride = intent.getStringExtra(EXTRA_DESCRIPTION_TEXT_OVERRIDE); + + // Need to do this once here to request the window feature. Can't do it in onResume + mAccounts = getAcceptableAccountChoices(AccountManager.get(this)); + if (mAccounts.isEmpty() + && mDisallowAddAccounts) { + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(R.layout.app_not_authorized); + mDontShowPicker = true; + } } @Override protected void onResume() { super.onResume(); + + if (mDontShowPicker) return; + final AccountManager accountManager = AccountManager.get(this); mAccounts = getAcceptableAccountChoices(accountManager); @@ -206,11 +220,6 @@ public class ChooseTypeAndAccountActivity extends Activity // If there are no relevant accounts and only one relevant account type go directly to // add account. Otherwise let the user choose. if (mAccounts.isEmpty()) { - if (mDisallowAddAccounts) { - setContentView(R.layout.app_not_authorized); - setTitle(R.string.error_message_title); - return; - } if (mSetOfRelevantAccountTypes.size() == 1) { runAddAccountForAuthenticator(mSetOfRelevantAccountTypes.iterator().next()); } else { diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 3443d6ef6e82a..6918099e98ae5 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2298,8 +2298,7 @@ diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index f282188878f8c..d40eb64deb16a 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -4123,7 +4123,7 @@ Error - This application does not support accounts for restricted profiles + This app doesn\'t support accounts for restricted profiles No application found to handle this action Revoke