我正在使用AccountManager來存儲帳戶&憑據的Android應用程序的工作。我遇到的一個問題是,即使我將一堆字符串值傳遞給AccountManager的addAccountExplyly數據包。AccountManager getUserData儘管設置爲空,但返回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");
}
一些代碼請。 – kichik
有太多的代碼複製+ pase,但我會用一些基本代碼編輯問題。有很多併發和線程,但一切都是通過_onAccountsUpdatedListener_啓動的。 – copolii