Sonunda birçok denemeden sonra öğrendim!
Accountmanager.addAccount() ve Accountmanager.addAccountExplicitly() çok farklı yöntemlerdir!
Eğer Accountmanager.addAccount() sizin AbstractAccountAuthenticator içinde ne olacağını işleyebilir bir de aynı yöntemi var çağırdığınızda. Diğer yandan, kullanıcı telefon ayarları/hesaplarına gidip özel hesap türünüzü seçip "hesap ekle" ye basıldığında bu yöntem çağrılır. Bu yüzden hesap türü ve birçok şeyle ilgileniyorum ve kullanıcıyı giriş/şarkı sayfasına yönlendiriyorum.
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;
}
sonra benim activiy kullanıcı bir hesap oluşturmak veya giriş. Sonrası şarkı veya kayıt kullanıcı sunucu ve eylem tamamlar gelen belirteçleri almak için seçtim ve sonunda hesabı eklemek için
Accountmanager.addAccountExplicitly()
kullanın.
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);
Soruyu güncelledim. addAccount() 'a ihtiyaç duymadan hesap türü de ekleyebiliriz – Kenji