首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Accountmanager.addAccount()与Accountmanager.addAccountExplicitly()

Accountmanager.addAccount()与Accountmanager.addAccountExplicitly()
EN

Stack Overflow用户
提问于 2016-04-01 09:55:45
回答 2查看 6.3K关注 0票数 8

当我们可以用Accountmanager.addAccount()创建带有所有参数的帐户时,为什么要使用Accountmanager.addAccountExplicitly()

我在谷歌上搜索并找出了当我们使用Accountmanager.addAccount()时,trigles AbstractAccountAuthenticator addAccount事件,但是有什么意义呢?为什么我们要使用addAccount方法?

更新

我们可以这样创建帐户:

代码语言:javascript
复制
 Account account = new Account(accountname, accountType);
 mAccountManager.addAccountExplicitly(account, accountPassword, null);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-08 11:27:55

经过多次尝试,我终于发现了!

Accountmanager.addAccount()和Accountmanager.addAccountExplicitly()是非常不同的方法!

当您调用Accountmanager.addAccount()时,它调用的方法与在AbstractAccountAuthenticator中可以处理发生的情况相同。另一方面,当用户转到电话设置/帐户并选择您的自定义帐户类型并按“添加一个帐户”,此方法将调用。因此,我处理帐户类型和许多东西,并指导用户登录/统一页面。

代码语言:javascript
复制
public class MyAuthenticator extends AbstractAccountAuthenticator {

    @Override
    public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException {

        final Intent intent = new Intent(mContext, DirectLogin.class);
        intent.putExtra(Constants.ARG_ACCOUNT_TYPE, accountType);
        intent.putExtra(Constants.ARG_AUTH_TYPE, authTokenType);
        intent.putExtra(Constants.ARG_IS_ADDING_NEW_ACCOUNT, true);
        intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);

        final Bundle bundle = new Bundle();
        bundle.putParcelable(AccountManager.KEY_INTENT, intent);
        return bundle;
    }

然后,在我的活动中,用户选择创建一个帐户或登录。在登录或注册用户之后,从服务器获取令牌,操作完成,最后我使用Accountmanager.addAccountExplicitly()添加帐户。

代码语言:javascript
复制
    String accountName = "name";
    String accountPassword = "password";
    final Account account = new Account(accountName, "account_type");

    AccountManager mAccountManager = AccountManager.get(getBaseContext());

    String authToken = intent.getStringExtra(AccountManager.KEY_AUTHTOKEN);
    String refreshToken = intent.getStringExtra(AccountManager.KEY_USERDATA);
    String authTokenType = AccountGeneral.ACCOUNT_TYPE;
    mAccountManager.addAccountExplicitly(account, accountPassword, null);
    mAccountManager.setAuthToken(account, authTokenType, authToken);
    mAccountManager.setUserData(account, "refreshToken", refreshToken);
票数 11
EN

Stack Overflow用户

发布于 2016-04-03 15:57:31

必须使用Accountmanager.addAccount()来要求用户创建某种类型的帐户。用户必须批准并与设备交互,这样才能真正创建帐户。此方法可用于创建任何类型的帐户。

AccountManager.addAccountExplicitely()允许您在没有用户批准/交互的情况下创建帐户,但它仅限于身份验证者具有与您相同签名的帐户类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36353277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档