我正在使用AbstractAccountAuthenticator的自定义实现,并且我已根据文档实现了getAuthToken。我一直在关注本教程:http://blog.udinic.com/2013/04/24/write-your-own-android-authenticator/
我不了解何时调用AbstractAccountAuthenticator实现中的getAuthToken方法。我已经在清单中设置了我创建的实现它的服务,创建了登录页面并可以添加帐户,添加令牌并使用AccountManager类从我的代码中获取令牌,但是在任何文档中都没有解释何时调用AbstractAccountAuthenticator代码。
有人可以帮助我理解为什么我似乎不必使用它时必须实现autheniticator。
答案 0 :(得分:0)
在AuthenticatorActivity.java
中private void finishLogin(Intent intent) {
Log.d("udinic", TAG + "> finishLogin");
String accountName = intent.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
String accountPassword = intent.getStringExtra(PARAM_USER_PASS);
final Account account = new Account(accountName, intent.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE));
if (getIntent().getBooleanExtra(ARG_IS_ADDING_NEW_ACCOUNT, false)) {
Log.d("udinic", TAG + "> finishLogin > addAccountExplicitly");
String authtoken = intent.getStringExtra(AccountManager.KEY_AUTHTOKEN);
String authtokenType = mAuthTokenType;
// 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, null);
mAccountManager.setAuthToken(account, authtokenType, authtoken);
} else {
Log.d("udinic", TAG + "> finishLogin > setPassword");
mAccountManager.setPassword(account, accountPassword);
}
setAccountAuthenticatorResult(intent.getExtras());
setResult(RESULT_OK, intent);
finish();
}
mAccountManager.setAuthToken(account, authtokenType, authtoken);
已设置令牌。您可以删除该行,并添加一个新帐户,然后调用getAuthToken,该方法将被调用。
答案 1 :(得分:0)
在authenticator.xml中设置android:customTokens =“ true”允许在我的abstractaccountauthenticator类的实现中调用getAuthToken方法