安卓系统中是否有类似于iPhone钥匙串的功能?

19
我正在寻找类似iPhone上“Keychain”的Android开发工具。它可以让我保存小的键值对,即使用户重新安装应用程序也保持不变。
有类似的东西吗?我可以这样使用标准首选项吗?
我想要实现类似于PC游戏的工作方式 - 将保存文件写入另一个文件夹,以便在删除和重新安装后保存文件不会丢失。
编辑:悬赏已结束,没有人提到“accountManager”。我刚刚偶然发现了它。是否可以使用它来实现我描述的行为?
4个回答

5
您可以像Michael Cramer所说的那样使用SD卡上的存储空间(让用户知道您正在存储数据:-))。当应用程序被删除时,SD卡上的数据不会被删除。
另一方面,您可以使用一个服务器来存储所有详细信息,这些详细信息可以在需要时下载,而不是使用用户名使用手机的IMEI号码,这是唯一的。这样,即使用户重新安装操作系统,他仍将能够重新获取设置。
要获取IMEI,您可以参考:如何在Android中以编程方式获取设备的IMEI / ESN?

1
这是2010年的答案,所以我想警告现在这个答案已经不可接受了。1)您不应该将文件存储在应用程序目录存储之外(Android 11的作用域存储)。它将对所有人可用。2)您无法在所有设备/ Android版本上获取IMEI。 - Jemshit Iskenderov

1

您在这里拥有真正的东西:

通过将智能密码锁集成到您的Android应用中,您可以使用用户保存的凭据自动为用户登录您的应用程序。用户可以保存用户名密码凭据和联合身份提供者凭据。

使用Credentials API检索登录时保存的凭据,将Smart Lock for Passwords集成到您的应用程序中。使用成功检索的凭据登录用户,或使用Credentials API部分完成应用程序的登录或注册表单来快速接纳新用户。在登录或注册后提示用户存储其凭据以进行未来的自动验证。

https://developers.google.com/identity/smartlock-passwords/android/


0

由于 Android 和 iPhone 类似的手机通常会使用数据计划,我建议您将键值对保存到一个集中的服务器中。当应用程序经历卸载、安装过程时,只需与您的服务器重新同步即可。


我想这样做,但我必须以某种方式识别用户。我不想让用户选择用户名,而是自动选择用户ID,然后将其用于重新同步,但是此ID在卸载后也会丢失... - Janusz
你可以通过IMEI识别手机,正如Ravi Vyas所提到的那样。最有可能的假设是手机和用户之间存在一对一的关系。 - Mantas Vidutis
当然,除了那些喜欢拥有最新手机并在eBay上出售旧手机的人之外,因为他们没有被限制在一些奇怪的计划中。 - Janusz

-3

是的。偏好设置是持久的,可以在正常的应用程序升级中保留。


1
偏好设置不会在重新安装后保留。 - dweebo
当然,如果您卸载一个应用程序,它将删除所有相关数据。否则这将需要对“卸载”有一个宽松的定义。 - Michael Cramer
那很糟糕...有时候你希望某些东西能够保留,比如游戏存档、账户数据等等。这些东西在卸载桌面应用程序时也不会被删除。 - Janusz
1
尽管我不同意你保留用户明确卸载应用程序时的数据的想法,但你可以明确地写入SD卡。 - Michael Cramer
1
@Janusz,你必须记住你正在处理的是手机而不是台式电脑。人们通常期望移动应用程序比桌面应用程序更简单,并且不想担心清理应用程序在设备上隐藏的文件。 - Mantas Vidutis
我知道,但是应用程序需要识别用户。但我不想让他们记住并创建帐户,如果我可以创建帐户并将其保存到钥匙串中,那就更容易了。 - Janusz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接