Да, инициатором может быть AccountAuthenticatorActivity
, но я предполагаю, что, в свою очередь, он может начать любое действие, которое захочет. AccountAuthenticatorActivity
не обязательно должен показывать свой собственный графический интерфейс.
Вот как мы это делаем; получить запрос addAccount
, который запускает действие предпочтения. Намерение анализируется, чтобы увидеть, запрашивается ли новая учетная запись, и отображается соответствующий графический интерфейс. После завершения работы мастера полученная учетная запись возвращается к AccountAuthenticatorActivity
через результат Intent
.
/*
* The user has requested to add a new account to the system. We return
* an intent that will launch our login screen if the user has not
* logged in yet, otherwise our activity will just pass the user's
* credentials on to the account manager.
*/
@Override
public Bundle addAccount(AccountAuthenticatorResponse response,
String accountType, String authTokenType,
String[] requiredFeatures, Bundle options)
throws NetworkErrorException {
Bundle result = new Bundle();
Intent i = new Intent(mContext, PrefsActivity.class);
i.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,
response);
i.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
ServerPrefsFragment.class.getName());
result.putParcelable(AccountManager.KEY_INTENT, i);
return result;
}
РЕДАКТИРОВАТЬ: Просто понял, что я не совсем ответил на вопрос. Решение, которое мы выбрали, чтобы сделать то, что вы хотите, на самом деле, как предложено ниже; не использует PreferenceActivity для мастера, но стандартное действие, вызываемое функцией addAccount, показанной выше.