AccountManager getUserData возвращает null, несмотря на то, что он установлен

Я работаю над приложением для Android, которое использует AccountManagerдля хранения учетных записей и учетных данных. . Одна проблема, с которой я столкнулся, заключается в том, что, несмотря на то, что я передаю кучу строковых значений в пакет данных AccountManager addAccountExplicitly.

Перед добавлением учетной записи я проверил, что пакет не пусти что он содержитзначения. И в большинстве случаев это так, но время от времени я получаю null, когда запрашиваю эти значения.

Нулевые возвращаемые значения чаще встречаются после того, как я только что удалил учетную запись и снова добавил ее.

Я выполняю свой запрос внутри метода onAccountsUpdatedреализации OnAccountsUpdateListener, так что учетная запись должна быть добавлена ​​и готова к работе, верно?

Спасибо за любую помощь

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);

Другой поток

AccountManager am = AccountManager.get(mContext);
final string value2 = am.getUserData(mAccount, k2);

if (TextUtils.isEmpty(value2)) {
    Log.d("WTF", "value is empty");
}
14
задан copolii 30 May 2012 в 21:58
поделиться