AccountManagerを使用してアカウントと資格情報を保存する Android アプリに取り組んでいます。私が抱えている問題の 1 つは、AccountManager のaddAccountExplicitlyデータ バンドルに一連の文字列値を渡しているにもかかわらずです。
アカウントを追加する前に、バンドルが空ではなく、値が含まれていることを確認しました。ほとんどの場合はこれに当てはまりますが、これらの値をクエリすると、ときどき null が返されます。
アカウントを削除して再度追加した後は、null の戻り値がより一般的になります。
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");
}