16

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

4

2 回答 2

32

正如 pablisco 所解释的,您可以通过addAccountExplicitly()的 userData Bundle 参数使用 AccountManager 存储任意用户数据的能力:

    final Bundle extraData = new Bundle();
    extraData.putString("someKey", "stringData");
    boolean accountCreated = am.addAccountExplicitly(account, password, extraData);

稍后,例如在您的 Authenticator 的getAuthToken()方法中,您可以检索与您正在使用的帐户相关的数据:

    String myData = am.getUserData(account, "someKey");

不幸的是,在撰写本文时,您只能检索字符串,因此当您第一次构建 Bundle 时,您的数据应该存储为字符串。希望这可以帮助某人。

于 2011-12-16T05:09:19.410 回答
3

在 Android 的文档中,添加帐户时应该使用 userData Bundle 来完成:

AccountManager manager = AccountManager.get(context);
manager.addAccountExplicitly(account, null, userData);

或显式添加值:

manager.setUserData(account, KEY, value);

但我遇到了麻烦:

AccountManager IllegalArgumentException:键为空

于 2011-12-02T18:29:48.843 回答