/* * Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.account.ui; import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import java.io.IOException; import me.zhanghai.android.douya.account.util.AccountUtils; public class AddAccountActivity extends AppCompatActivity { private static final String KEY_PREFIX = AddAccountActivity.class.getName() + '.'; private static final String EXTRA_ON_ADDED_INTENT = KEY_PREFIX + "on_added_intent"; public static Intent makeIntent(Intent onAddedIntent, Context context) { return new Intent(context, AddAccountActivity.class) .putExtra(EXTRA_ON_ADDED_INTENT, onAddedIntent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { AccountUtils.addAccount(this, new AccountManagerCallback<Bundle>() { @Override public void run(AccountManagerFuture<Bundle> future) { finish(); try { Bundle result = future.getResult(); if (result.containsKey(AccountManager.KEY_ACCOUNT_NAME) && result.containsKey(AccountManager.KEY_ACCOUNT_TYPE)) { // NOTE: // Active account should have been set in // AuthenticatorActivity.onAuthResult() since the mode should be // AUTH_MODE_NEW. Intent onAddedIntent = getIntent() .getParcelableExtra(EXTRA_ON_ADDED_INTENT); startActivity(onAddedIntent); } } catch (AuthenticatorException | IOException | OperationCanceledException e) { e.printStackTrace(); } } }, null); } } }