【问题标题】:Retrieve settings after app reinstall in android在android中重新安装应用程序后检索设置
【发布时间】:2014-08-21 19:36:26
【问题描述】:

我有一个使用 PreferenceManager 保存一些设置的应用程序。后来我卸载了该应用程序,稍后我想在重新安装相同的应用程序时取回相同的设置。 例如:我有一个复选框,其状态使用首选项管理器保存,然后卸载应用程序。稍后当我重新安装应用程序时,我需要恢复该复选框的状态。 这可能吗? 如果不使用preferenceManager,是否还有其他方法可以做到这一点,即保存在数据库中?

【问题讨论】:

  • 最好的选择是将信息与设备分开存储。如果用户重置他们的设备怎么办?丢了又买新的?听起来您也希望保留偏好...
  • 如果用户重置或更换手机,我将不需要它。仅当应用程序重新安装在与以前相同的设备中时,我才需要它。

标签: android sqlite sharedpreferences uninstallation


【解决方案1】:

您可以在外部存储中保留共享首选项的备份文件,当您再次安装应用程序时,您可以从备份文件中更新共享首选项。或者您可以使用BackupAgentHelper/SharedPreferenceBackupHelper 将数据存储在云端。 但是,对于SQLite,如果您将数据库文件保存在不同的目录中,Android 在卸载应用程序时不会删除这些文件。 如果是 SQLite 数据库,您可以在 SQLiteOpenHelper 构造函数中设置数据库目录。假设您希望将路径设置为:

final static String DB_PATH = Environment.getExternalStorageDirectory().getAbsolutePath().concat("/databases/my_db.db");

然后在 sqlite 助手中进行如下设置:

public DbHelper(Context context, String name, CursorFactory factory,
        int version) {
    super(context, DB_PATH, factory, version);
}

同时,如果是 SharedPreferences,您可以将文件从默认应用数据目录复制到您在 sd 卡中选择的文件夹中。您需要注意这里以便选择适当的时间备份 SharedPreferences 文件。作为 IO 操作,它可能需要时间才能完成。

【讨论】:

    【解决方案2】:

    卸载应用后,SharedPreference 和数据库将不会保留。
    话虽如此,Android 提供了一种将 SharedPreferences 发送到云端并在重新安装应用程序时检索它们的简单方法。这种机制称为BackupAgentHelper

    【讨论】:

    • 如果数据库文件未存储在默认应用数据目录中,则不是这样
    • 当然,我只是在谈论内部应用特定存储
    • 通过使用外部存储:developer.android.com/guide/topics/data/…
    • 能否给出一个如何设置数据库外部路径的示例代码。
    • Android 框架不允许您这样做。但是您可以将数据从内部存储复制到外部存储
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多