我想使用android AccountManager
来同步我的网络服务和应用程序(联系人和calander的标准同步),但AccountManager
似乎只存储用户名和密码。我的Web服务需要三个凭据:用户名,密码和帐户。存储第三条信息的最佳做法是什么?
答案 0 :(得分:28)
正如pablisco所解释的那样,您可以使用AccountManager通过addAccountExplicitly()的userData Bundle参数存储任意用户数据的能力:
final Bundle extraData = new Bundle();
extraData.putString("someKey", "stringData");
boolean accountCreated = am.addAccountExplicitly(account, password, extraData);
稍后,例如在您的身份验证器的getAuthToken()方法中,您可以检索与您正在使用的帐户相关的数据:
String myData = am.getUserData(account, "someKey");
不幸的是,在撰写本文时,您只能检索字符串,因此在首次构建Bundle时,您的数据应存储为String。希望这有助于某人。
答案 1 :(得分:2)
从Android的文档中,当添加帐户时,应该使用userData Bundle完成:
AccountManager manager = AccountManager.get(context);
manager.addAccountExplicitly(account, null, userData);
或明确添加值:
manager.setUserData(account, KEY, value);
但是我遇到了这个问题: