Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android帐户管理器中存储其他数据_Android_Accountmanager - Fatal编程技术网

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

在Android帐户管理器中存储其他数据,android,accountmanager,Android,Accountmanager,我想使用安卓AccountManager同步我的Web服务和应用程序(联系人和日历的标准同步),但是,AccountManager只显示存储用户名和密码。我的web服务需要三个凭据:用户名、密码和帐户。存储第三条信息的最佳做法是什么?根据Android文档,在添加帐户时,应该使用userData捆绑包: AccountManager manager = AccountManager.get(context); manager.addAccountExplicitly(account, null,

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

根据Android文档,在添加帐户时,应该使用userData捆绑包:

AccountManager manager = AccountManager.get(context);
manager.addAccountExplicitly(account, null, userData);
或显式添加值:

manager.setUserData(account, KEY, value);
但我在这方面遇到了麻烦:


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

    final Bundle extraData = new Bundle();
    extraData.putString("someKey", "stringData");
    boolean accountCreated = am.addAccountExplicitly(account, password, extraData);
稍后,例如,在验证器的方法中,您可以检索与正在使用的帐户相关的数据:

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

不幸的是,在撰写本文时,您只能检索字符串,因此在首次构建捆绑包时,您的数据应该存储为字符串。希望这对某人有所帮助。

对于一个愚蠢的问题,很抱歉,您不能将用户名和帐户合并,并将其保留为符合逻辑的“用户名”吗?谢谢您的回复。我最终放弃了客户经理。最后我遇到了很多麻烦。尽管如此,看起来我的项目正在成长,我很可能会重新开始。我会检查你的答案,因为我正在考虑在我的应用程序中使用帐户管理器,我需要存储电子邮件和用户ID之类的东西。使用上述方法安全吗?或者任何应用程序都可以读取id和电子邮件?@TomHart-getUserData()上的文档(其他应用程序读取帐户数据的方式)说明:“此方法要求调用方持有权限AUTHENTICATE_帐户,并且具有与帐户身份验证器相同的UID。”。这意味着,如果设置正确,您只有您的应用程序才能访问该数据。但是,AccountManager不是保存任何敏感数据的安全区域。对设备的物理访问允许任何人读取该数据。请看:,java.lang.String)我做了一些测试,我看到我可以读取其他帐户的数据,我只需要输入密钥。您对如何安全存储用户ID和电子邮件有何建议?我所能想到的就是对setUserData使用一个非常模糊的键,比如
.setUserData(“Some^^^!\u really\u squema1l\u key!”,userEmail)
但如果有人反编译应用程序,他们可能会得到我使用的字符串。@J.CarlosNavea有没有办法将arraylist作为用户数据添加到accountmanager并可以检索??