0

当我的应用程序启动时,我想要求我的用户创建一个Account或从现有的应用程序中进行选择。我已经实现了一个Authenticator(extended AccountAuthenticatorActivity, AbstractAccountAuthenticator, made a Service) 它似乎正在工作,我可以从设置/帐户创建新帐户。

当我启动时AccountPicker,我会得到一个已创建帐户的列表。当我点击Add acccount它显示我的Account创作Activity。但是当我完成帐户创建、完成该活动并返回到AccountPicker我没有看到新创建的新选项时Account。虽然如果我重新启动应用程序,最近创建Account的会在列表中。

我如何开始AccountPicker

Intent intent = accountManager.newChooseAccountIntent(null, null, new String[]{"test_namespace"}, null, null, null, null);
startActivityForResult(intent, TEST_CODE);

我的问题:

  • 它应该像这样工作吗?
  • 我可以AccountPicker在创建新内容后 重新加载内容Account吗?
  • 当我从我的创作中返回时,我可以简单地返回一个Intent新创建的吗?AccountAccountActivity
4

1 回答 1

0

在我的身份验证器活动中,用户在服务器上进行身份验证后,我检查现有帐户并显式添加该帐户(如果不存在):

    boolean accountRegistered = false;
    Account account = new Account(username, AccountAuthenticator.ACCOUNT_TYPE_MYAPP);
    AccountManager acctMgr = AccountManager.get(this);
    Account[] accounts = acctMgr.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE_MYAPP);
    for (Account acct : accounts) {
        if (acct.equals(account)) {
            accountRegistered = true;
            break;
        }
    }

    if (accountRegistered) {
        acctMgr.setPassword(account, password);
    } else {
        acctMgr.addAccountExplicitly(account, password, null);
    }

完成此操作后,我会在帐户选择器中看到该帐户。

我不能保证这是 100% 正确的;使用未记录的身份验证类,我们都瞎了眼。

于 2017-01-03T15:23:16.493 回答