我正在开发一个使用AccountManager存储帐户和凭据的 Android 应用程序。我遇到的一个问题是,即使我将一堆字符串值传递给 AccountManager 的addAccountExplicitly数据包。
我已检查以确保捆绑包不为空并且它包含添加帐户之前的值。大多数时候都是这种情况,但是当我查询这些值时,每隔一段时间我就会得到空值。
在我刚刚删除帐户并重新添加它之后,空返回值更常见。
我在OnAccountsUpdateListener实现的onAccountsUpdated方法中进行查询,所以应该添加帐户并且可以使用,对吧?
谢谢你的帮助
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");
}