当我在应用程序中使用 test1@gmail.com 登录时,它将使用我的电子邮件成功生成帐户,如下所示
现在我注销并使用不同的电子邮件登录,例如 test2@gmail.com ,然后它生成这样的帐户
我想知道那是最好的方法
1)删除第一个帐户,然后添加第二个帐户
2)如果可以更新第一个帐户,请用第二个更新。
我实际遇到的问题是什么?
如果我删除并再次使用addAccountExplicitly
添加帐户,则需要花费一些时间来创建新帐户,因此我的下一个代码将被执行,并且帐户返回空。
如果可以,可以使用updateCredentials
更新帐户吗?
编辑:
我实际上在做什么?
还有其他解决方案来更新电子邮件ID 吗?
最佳答案
我已经解决了这个问题。
问题:删除/添加帐户仍然为空account
对象
解决方案1:
首先,我使用removeAccount()
删除了帐户,然后尝试addAccountExplicitly
,但是removeAccount()
花了一些时间在后台线程中执行,而 addAccountExplicitly调用了并进行了进一步的处理。
因此,我改变了流程,因为我使用了 AccountManager 类的 removeAccount
方法,并在该处理程序中执行了整个过程,所以我在回调区域内编写了代码。
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
mAccountManager.removeAccount(accounts[0], LoginActivity.this, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
// Creating the account on the device and setting the auth token we got
// (Not setting the auth token will cause another call to the server to authenticate the user)
mAccountManager.addAccountExplicitly(account, accountPassword, intent.getBundleExtra(AccountManager.KEY_USERDATA));
mAccountManager.setAuthToken(account, authTokenType, authToken);
/**
* Setting for Sync Adapter
* Syncing Configuration
*/
SyncAdapter.configSyncAdapter(mContext);
}
}, null);
} else {
mAccountManager.removeAccount(accounts[0], new AccountManagerCallback<Boolean>() {
@Override
public void run(AccountManagerFuture<Boolean> future) {
// Creating the account on the device and setting the auth token we got
// (Not setting the auth token will cause another call to the server to authenticate the user)
mAccountManager.addAccountExplicitly(account, accountPassword, intent.getBundleExtra(AccountManager.KEY_USERDATA));
mAccountManager.setAuthToken(account, authTokenType, authToken);
/**
* Setting for Sync Adapter
* Syncing Configuration
*/
SyncAdapter.configSyncAdapter(mContext);
}
}, null);
}
解决方案2:
我发现了一种名为 renameAccount() 的方法,但它要求的最低SDK版本为21。
根据文档:
谢谢你。