【问题标题】:In android is there any way to preserve SharedPreferences after an uninstall在 android 中有什么方法可以在卸载后保留 SharedPreferences
【发布时间】:2012-04-06 14:32:39
【问题描述】:

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

有什么办法可以保留它,这样如果用户卸载并重新安装,他们就可以恢复他们的旧数据?

【问题讨论】:

  • 如果我卸载了某些东西,我不想留下任何东西……
  • 有时你会,有时你不会。有没有办法提供卸载选项?

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


【解决方案1】:

从Android 6.0开始就可以使用了:

<application
        android:allowBackup="true">

通过将其设置为 true,您的数据(sharedprefs 和其他数据)将保存在 Google 云上,并在下次安装应用时恢复。你可以阅读更多关于它的信息here。需要注意的是,从 6.0 开始,default 设置为 true

【讨论】:

  • 非常有趣的评论
  • 默认开启吗?
  • @iLoveUnicorns 根据文档 是:developer.android.com/guide/topics/manifest/…
  • 这个答案很重要。谢谢,Warpzit。解决了我的问题。有没有简单的方法来清除备份的数据?
  • @w3bshark 很好,因为它处于共享首选项中,您可以简单地更新 sharedpreference 主键,换句话说:不要使用默认的共享首选项...或者您需要清除每个单独的条目或更新应用程序不允许备份和重新安装。
【解决方案2】:

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

见:

BackupAgentHelper

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

general Backup guide

【讨论】:

  • 如果我们升级应用,SherPref 会被删除吗?
  • @gabriel 我相信 BackupAgentHelper 仅在您重新配置设备时才有效。如果您卸载并重新安装应用程序,它不仅会恢复 SharedPrefs。
  • @IgorGanapolsky 你有这方面的证据吗?尝试实现此功能并逐字逐句地执行所有操作,但卸载后无法恢复。
  • 用户不需要在设置中启用吗?用户可以打开和关闭备份,对吗?
  • 很遗憾没有和小米合作:(
【解决方案3】:

我很确定SharedPreferences 总是与应用程序一起被删除。在我看来,最好的方法是将隐藏文件(类似于“.nameOfFile”)写入 SD 卡或内部存储器,并使其包含首选项。

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

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

【讨论】:

  • 这是怎么做的,但它不必隐藏,我认为它不应该被隐藏--只需将其转储到 /data /myapp/ 目录,并在创建时检查该位置。
  • 编写隐藏文件似乎是一种不好的做法。如果每个应用程序都这样做,用户最终会得到大量隐藏文件,他们很难摆脱这些文件。
  • @louielouie 是的,这很好,就像我说的,这只是我想到的第一种方式。但你是对的,OP 应该与 edthethird 所说的一致。
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      sharedPrefs 和 DB 在您卸载时会被删除。您必须在应用程序之外编写(例如 sd)。

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

        • 用户不需要在设置中启用吗?用户可以打开和关闭备份,对吗?
        【解决方案8】:

        在 2020 年,在我看来 Shared Storage 是要走的路。

        Android 数据和文件存储概览

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

        文档和文件的共享存储

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-10
          • 1970-01-01
          • 2021-11-01
          • 2019-06-14
          • 2014-03-27
          • 2015-02-25
          • 2011-02-16
          • 1970-01-01
          相关资源
          最近更新 更多