在Android帐户管理器中存储其他数据

时间:2011-08-15 09:08:39

标签: android accountmanager

我想使用android AccountManager来同步我的网络服务和应用程序(联系人和calander的标准同步),但AccountManager似乎只存储用户名和密码。我的Web服务需要三个凭据:用户名,密码和帐户。存储第三条信息的最佳做法是什么?

2 个答案:

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

但是我遇到了这个问题:

AccountManager IllegalArgumentException: key is null