diff options
author | Amith Yamasani <yamasani@google.com> | 2012-10-11 17:17:57 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-11 17:17:57 -0700 |
commit | 8d7148c4d5094f38f86199610a49a8769eace1cd (patch) | |
tree | 74d372b8c19fb506479950e2a81383de96b2f2ea /src/com/android | |
parent | 59fde8ef9d20f109ae52717f92e6c151c12be819 (diff) | |
parent | 33e8e04d844713f59ca0193bb93f8ae9bedbe72c (diff) | |
download | packages_apps_Settings-8d7148c4d5094f38f86199610a49a8769eace1cd.zip packages_apps_Settings-8d7148c4d5094f38f86199610a49a8769eace1cd.tar.gz packages_apps_Settings-8d7148c4d5094f38f86199610a49a8769eace1cd.tar.bz2 |
am 33e8e04d: am 552bebe0: am 35bbbc6c: Merge "Launch account addition activity from Settings instead of from AccountManager" into jb-mr1-dev
* commit '33e8e04d844713f59ca0193bb93f8ae9bedbe72c':
Launch account addition activity from Settings instead of from AccountManager
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/settings/accounts/AddAccountSettings.java | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java index e0fe629..6f7e29a 100644 --- a/src/com/android/settings/accounts/AddAccountSettings.java +++ b/src/com/android/settings/accounts/AddAccountSettings.java @@ -67,18 +67,31 @@ public class AddAccountSettings extends Activity { static final String EXTRA_HAS_MULTIPLE_USERS = "hasMultipleUsers"; private static final int CHOOSE_ACCOUNT_REQUEST = 1; + private static final int ADD_ACCOUNT_REQUEST = 2; private PendingIntent mPendingIntent; private AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() { public void run(AccountManagerFuture<Bundle> future) { + boolean done = true; try { Bundle bundle = future.getResult(); - bundle.keySet(); - setResult(RESULT_OK); - - if (mPendingIntent != null) { - mPendingIntent.cancel(); + //bundle.keySet(); + Intent intent = (Intent) bundle.get(AccountManager.KEY_INTENT); + if (intent != null) { + done = false; + Bundle addAccountOptions = new Bundle(); + addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent); + addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, + Utils.hasMultipleUsers(AddAccountSettings.this)); + intent.putExtras(addAccountOptions); + startActivityForResult(intent, ADD_ACCOUNT_REQUEST); + } else { + setResult(RESULT_OK); + if (mPendingIntent != null) { + mPendingIntent.cancel(); + mPendingIntent = null; + } } if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "account added: " + bundle); @@ -89,7 +102,9 @@ public class AddAccountSettings extends Activity { } catch (AuthenticatorException e) { if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "addAccount failed: " + e); } finally { - finish(); + if (done) { + finish(); + } } } }; @@ -136,6 +151,14 @@ public class AddAccountSettings extends Activity { // Go to account setup screen. finish() is called inside mCallback. addAccount(data.getStringExtra(EXTRA_SELECTED_ACCOUNT)); break; + case ADD_ACCOUNT_REQUEST: + setResult(resultCode); + if (mPendingIntent != null) { + mPendingIntent.cancel(); + mPendingIntent = null; + } + finish(); + break; } } @@ -155,7 +178,7 @@ public class AddAccountSettings extends Activity { null, /* authTokenType */ null, /* requiredFeatures */ addAccountOptions, - this, + null, mCallback, null /* handler */); mAddAccountCalled = true; |