将Bundle设置为帐户管理器中的用户数据

时间:2014-10-27 11:34:32

标签: android accountmanager android-authenticator

我正在Android帐户管理器中自己的身份验证器开发。当用户登录时,我想在帐户管理员中添加帐户时保存一些用户特定数据。

我正在使用AccountManager中的方法:

public boolean addAccountExplicitly (Account account, String password, Bundle userdata)

第三个参数是一个bundle,它只能包含String键值对,我想......但在我的情况下,我想把一个bundle放在一个bundle中.. 它看起来像这样:

userData _"Parameter1":"bundleOfParameter1"
        |_"Paramter2": "bundleOfParamter2" 
        |_....

在帐户管理器中添加帐户后,我尝试使用以下内容获取用户数据:

public String getUserData (Account account, String key)

并且它返回null,我认为因为它们在添加到accountmanager期间没有设置userdata,因为它是一个bundle而不是String ...

有人知道如何传递问题吗?或者有人有同样的问题,可以帮忙吗? 我的想法是将userdata包保存为带有Bundle.toString()的字符串,然后将字符串转换为包?

(请原谅我!完美的英语......)

2 个答案:

答案 0 :(得分:0)

尝试在自定义类中发送数据,该类实现Parcelable而不是bundle中的bundle

答案 1 :(得分:0)

请勿使用addAccountExplicitly(Account, String, Bundle)添加用户数据。相反,只需在调用addAccountExplicitly(Account, String, Bundle)时为捆绑包传递 null 即可。之后,调用setUserData(Account, String, String)添加用户数据。请记住在致电setUserData(Account, String, String)

之后立即致电addAccountExplicitly(Account, String, Bundle)