Estoy trabajando en una aplicación de Android que usa el AccountManager para almacenar las credenciales de las cuentas &. Un problema que he tenido es que, aunque transfiero un conjunto de valores String al de AccountManager addAccountExplicitly paquete de datos.AccountManager getUserData devolviendo nulo a pesar de estar configurado
He comprobado para asegurarse de que el paquete es no está vacío y que contiene los valores antes de añadir la cuenta. Y la mayoría de las veces este es el caso, pero de vez en cuando me sale nulo cuando consulto estos valores.
Los valores de devolución nula son más comunes después de que acabo de eliminar la cuenta y volver a agregarla.
que estoy haciendo mi consulta dentro de la onAccountsUpdated método de una implementación OnAccountsUpdateListener, por lo que la cuenta se debe agregar y bueno para ir, ¿verdad?
Gracias por cualquier ayuda
AuthenticatorActivity
// in the AuthenticatorActivity
Bundle userData = new Bundle();
userData.put (k1, v1);
userData.put (k2, v2);
userData.put (k3, v3);
userData.put (k4, v4);
userData.put (k1, v1);
Account a = new Account ("acc name", "com.account.type");
AccountManager am = AccountManager.get(this);
OnAccountsUpdateListener listener = new OnAccountsUpdateListener() {
@Override
public void onAccountsUpdated(Account[] accounts) {
Account mine = findAccount(accounts, account); // match account name
notifySignedIn(mine); // tell the world you're signed in
am.removeOnAccountsUpdatedListener(this);
}
};
am.addOnAccountsUpdatedListener(listener, handler, false);
am.addAccountExplicitly(a, "themostsecurepwintheworld", userData);
algún otro flujo
AccountManager am = AccountManager.get(mContext);
final string value2 = am.getUserData(mAccount, k2);
if (TextUtils.isEmpty(value2)) {
Log.d("WTF", "value is empty");
}
Algún código, por favor. – kichik
Hay demasiado código para copiar + pase, pero voy a editar la pregunta con un código básico. Hay mucha concurrencia y subprocesamiento, pero todo se inicia a través de _onAccountsUpdatedListener_. – copolii