Implementé mi autenticador de AccountManager, el servicio y toda la oferta, y todo parece funcionar bien.No permitir múltiples cuentas en AccountManager
Sin embargo, hay un pequeño problema: solo quiero que exista una sola cuenta para mi aplicación en el administrador de la cuenta, pero no puedo encontrar una manera de limitar esto.
¿Mi única solución es realizar una búsqueda y eliminar las cuentas actuales (por tipo) antes de agregar la nueva cuenta?
Mi código actual:
private void removeAccounts()
{
Account [] accounts = mAcctMgr.getAccountsByType (mAccountType);
if (accounts.length == 0) return;
final Handler handler = new Handler();
AccountManagerCallback<Boolean> callback = new AccountManagerCallback<Boolean>()
{
@Override
public void run(AccountManagerFuture<Boolean> arg0)
{
// nada
}
};
for (Account a : accounts) {
mAcctMgr.removeAccount (a, callback, handler);
}
}
no lo hago por cualquier medio llaman a esto una solución elegante, pero por el momento parece ser el único que funciona.
Lo que habla en contra de buscar en las cuentas y eliminar o anular si ya existe –
Porque si hay una manera de limitar las cuentas a una sola, entonces esa sería obviamente la forma * adecuada * de hacerlo. ¿Has hecho esto? No puedo anular una cuenta, una vez que carga una cuenta, los campos son definitivos. La eliminación es asincrónica y utiliza una interfaz que no está documentada en absoluto. Dejar el método de interfaz en blanco parece funcionar, pero por razones obvias no quiero hacer eso. – copolii
Ya utilicé AccountManager y no conozco otra forma de limitar las cuentas a una sola. Creo que deberías avisar al usuario con un cuadro de diálogo si quiere eliminar el anterior y luego dejarlo crear uno nuevo. No creo que haya una manera más elegante de hacer eso. –