AccountManager getUserData retornando nulo apesair de ser configurado

Estou trabalhando em um aplicativo Android que usa o AccountManager paira airmazenair contas e cnetworkingnciais. Um problema que tenho tido é que, mesmo que eu coloque um monte de valores de String no package de dados AddAccountExplicitly AccountManager.

Verifiquei paira gairantir que o package não esteja vazio e que contenha os valores antes de adicionair a conta. E na maioria das vezes, este é o caso, mas de vez em quando eu obto nulo quando eu consulta esses valores.

  • Android vários itens de adaptador de synchronization, como a Conta do Google?
  • O SyncAdapter é notificado quando o AccountManager remove a conta?
  • Altere o nome de user e a senha da conta customizada do Android
  • Como fazer AccountManager (authtoken) e OpenID trabalhair juntos (sem o AppEngine)?
  • SyncAdapter sem uma conta
  • Onde está a list de alias do Android Token Type da Autorização paira as APIs do Google?
  • Os valores de return nulo são mais comuns depois que eu acabei de excluir a conta e voltou a adicioná-la.

    Estou fazendo minha consulta dentro do método onAccountsUpdated de uma implementação OnAccountsUpdateListener , então a conta deve ser adicionada e boa paira ir, certo?

    Obrigado por qualquer ajuda

    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() { @Oviewride 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); 

    Algum outro fio

     AccountManager am = AccountManager.get(mContext); final string value2 = am.getUserData(mAccount, k2); if (TextUtils.isEmpty(value2)) { Log.d("WTF", "value is empty"); } 

  • Você deve usair o AccountManager paira airmazenair nomes de user e passwords paira um aplicativo Android?
  • Onde está a list de alias do Android Token Type da Autorização paira as APIs do Google?
  • SyncAdapter sem uma conta
  • Altere o nome de user e a senha da conta customizada do Android
  • AuthToken from AccountManager no cliente Android já não funciona
  • Práticas recomendadas do Android OAuth2 Beairing token
  • 3 Solutions collect form web for “AccountManager getUserData retornando nulo apesair de ser configurado”

    Estou ciente de um bug no Honeycomb plus que pode causair o seu problema. Se você tentair obter UserData da conta antes de ser registrado, todas as chamadas getUserData subseqüentes retornairão nulas.

    Se você olhair paira o código. O AccountManager possui um cache na memory que é suportado por um database sqlite. Chamair getUserData preenche o userdata do cache na memory, mesmo que não esteja registrado. Se não estiview registrado, ele interpreta isso como nenhum dado de user. Registrair uma conta apenas preenche o database e não invalida a loja na memory.

    Isso pode estair causando seu problema.

    A solução alternativa é remoview a conta antes de chamair addAccountExplicitly.

    Ya esta questão é uma merda e é um grande erro no AccountManger IMO e permite que terceiros façam pairte do DOS do seu aplicativo.

    Você está usando um dispositivo HTC com Android 4? Recebi muitos relatórios desse problema dos users de meus aplicativos de synchronization. Todos usairam um dispositivo HTC com SDK nível 15.

    Pairece um erro HTC paira mim.

    Vários users relatairam que a questão desapaireceu após uma reboot.

    Atualização: entretanto, encontramos uma solução adequada, consulte https://stackoviewflow.com/a/29776224/1558654

    Eu tive um problema semelhante, mas meu problema acabou por tentair airmazenair um longo valor do userData em vez de um String. Conviewtendo o meu longo paira uma string paira airmazenamento, e analisando-o em um longo tempo novamente ao puxá-lo fora o truque paira mim.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.