在android中有任何方法可以在卸载后保留SharedPreferences

时间:2012-03-22 01:44:49

标签: android android-preferences android-backup-service

我在SharedPreferences中保留了一些应用程序元数据。每当我卸载应用程序并重新安装时,都会删除SharedPreferences

有没有办法让它保留,以便如果用户进行卸载并重新安装,他们可以恢复旧数据?

8 个答案:

答案 0 :(得分:17)

您应该在应用中添加BackupAgentHelper。与SharedPreferenceBackupHelper一起,它将SharedPreferences备份到云端(如果设备支持它)。重新安装应用程序后,数据将恢复。

见:

BackupAgentHelper

SharedPreferenceHelper (contains all the code you need to implement it)

general Backup guide

答案 1 :(得分:16)

从Android 6.0开始,可以使用:

<application
        android:allowBackup="true">

通过将其设置为true,您的数据(sharedprefs和其他)将保存在Google云上,并在下次安装应用时进行恢复。您可以阅读更多相关信息here。应该注意的是,自6.0以来,默认设置为 true

答案 2 :(得分:3)

我非常确定SharedPreferences始终与应用一起删除。在我看来,最好的方法是将一个隐藏文件(类似“.nameOfFile”)写入SD卡或内部存储器,并包含首选项。

您应该使用SharedPreferences,它是偏好管理的Android标准。您可以这样做,以便第一次加载应用程序时,它会检查SDCard是否存在上次打开时创建的隐藏文件。如果该文件存在,那么读入这些输入并将它们存储在SharedPreferences中,如果没有,则用户删除它或者用户之前从未安装过您的应用程序。

这只是一种方法,它可能不是最有效的,但我希望它有所帮助!

答案 3 :(得分:2)

执行此操作的一种方法是将用户数据存储在服务器上。然后,当用户重新安装应用程序或在其他设备上安装应用程序时,他们可以“同步”他们的用户数据。这只是数据的小型HTTP下载,可能存储在JSON中,然后您将解析并写入SharedPreferences。

如果您不想维护自己的服务器,可以使用Dropbox等云服务。这就是app 1Password Reader的工作原理。

答案 4 :(得分:2)

正如edthethird所说:最好在设备外部存储上放置物理文件,并在安装时读取它们。 如果需要向用户隐藏文件内容,只需执行简单的加密/解密过程。

答案 5 :(得分:1)

卸载时会删除

sharedPrefs和DB。你必须在应用程序之外写(例如sd)。

答案 6 :(得分:1)

这实际上是内置的,你只需要实现几个类来启用它。数据将被备份并链接到用户的Google帐户,因此如果他们在新设备上安装应用程序,重新安装等,它将自动恢复。

http://developer.android.com/guide/topics/data/backup.html

答案 7 :(得分:0)

在2020年,Shared Storage似乎是必去之路。

Android数据和文件存储概述

https://developer.android.com/training/data-storage

文档和文件的共享存储

https://developer.android.com/training/data-storage/shared/documents-files