Android setAuthToken 第一次无法正常工作

Posted

技术标签:

【中文标题】Android setAuthToken 第一次无法正常工作【英文标题】:Android setAuthToken not working for first time 【发布时间】:2015-12-25 13:50:31 【问题描述】:

我正在使用 AccountManager 在 android 上保存我的应用程序帐户,并希望在设备上保存身份验证令牌。 每次我登录并执行 addAccountExplicitly 时都会添加我的应用程序帐户,但 setAuthToken 不起作用,直到我再次登录并再次 setAuthToken 。 下面是我添加帐户和设置 authToken 的代码

String accountName = authIntent.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
String accountType = authIntent.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE);
String accountPass = authIntent.getStringExtra(Constants.ACCOUNT_PASS);
String accntAuthToken = authIntent.getStringExtra(AccountManager.KEY_AUTHTOKEN);

Account resilincAccount = new Account(accountName, Constants.ACCOUNT_TYPE);
AccountManager mAccountManager = AccountManager.get(getApplicationContext());

boolean accountAdded = mAccountManager.addAccountExplicitly(resilincAccount, accountPass, null);
mAccountManager.setAuthToken(resilincAccount, Constants.ACCOUNT_TYPE, accntAuthToken);
mAccountManager.addOnAccountsUpdatedListener(this, null, true);
setAccountAuthenticatorResult(authIntent.getExtras());
setResult(RESULT_OK, authIntent);

有人知道为什么我必须登录两次才能将我的 authToken 保存在 AccountManager 中吗?

【问题讨论】:

【参考方案1】:

您传递给setAccountAuthenticatorResult 的Bundle 必须包含以下属性:

res.putExtra(AccountManager.KEY_ACCOUNT_TYPE, <account_type>);
res.putExtra(AccountManager.KEY_ACCOUNT_NAME, <user_id>);
res.putExtra(AccountManager.KEY_AUTHTOKEN, <auth_token>);

【讨论】:

以上是关于Android setAuthToken 第一次无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Android 第一次开机后来通知无提示音

Android——关于Activity跳转的返回(无返回值和有返回值)——无返回值

Edittext默认无焦点

Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值

Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值

配置cordova的android开发环境(无android studio)