在哪里存储android应用程序配置以存活/重新安装

时间:2014-12-08 23:02:56

标签: android configuration

我有一个应用程序需要大量文件来维护用户首选项和系统配置(这是来自现有项目的端口)。我想知道在Android设备上存储这个配置目录的首选位置。

getExternalFilesDir()似乎是一个不错的选择,除非在卸载或重新安装应用程序时删除此目录。这对于最终卸载来说没问题,但是如果我向我的客户提供应用程序的更新,我需要保留他们的首选项。

所以getFilesDir()中的某个地方是我的下一个候选人,但我应该在哪里保留我的配置目录?只是在/ Android中的getFilesDir()的根目录?或者其他一些“顶级”'目录。这个位置的优点是文件将在重新安装时保留,但我需要提供一种在卸载时删除配置的方法,但这似乎不可能,因为似乎没有& #34; onUninstall()"方法

(想象一下RAW照片应用程序,它存储了每张图片的用户设置;这些设置会在哪里存储,以便对应用程序的更新没有删除所有设置,但是在卸载时会被删除?)< / p>

为此添加一点点扭曲,我需要能够提供额外的&#34;包&#34;将文件添加到此配置目录中的应用程序 - 因此这些应用程序必须能够找到主应用程序的config目录并在那里读取和写入文件。 (即它不能私有)

对于开发,我只使用getFilesDir()+&#34; / MyApp&#34;现在有效,但似乎不对!

谢谢

1 个答案:

答案 0 :(得分:0)

  

这适用于最终卸载,但如果我向客户提供应用程序的更新,我需要保留其首选项。

在普通升级期间保留

getExternalFilesDir()。它将被删除的唯一时间是卸载,“最终”或其他方式。升级应用程序通常不会涉及卸载。

  

所以getFilesDir()中的某个地方是我的下一个候选人

getFilesDir()getExternalFilesDir()在升级和卸载方面具有相同的特征。

  

此位置的优点是可以通过重新安装来保留文件

不,它没有。 <{1}}以及卸载后移除应用internal storage中的所有位置。

  

想象一下RAW照片应用程序,它存储了每张照片的用户设置;这些设置将存储在何处,以便应用程序的更新不会删除所有设置,但是在卸载时会被删除?

getFilesDir()可能是候选人。

  

我需要能够提供额外的“包”应用程序来将文件添加到此配置目录中 - 因此这些应用程序必须能够找到主应用程序的config目录并在那里读取和写入文件。 (即它不能是私人的)

我强烈建议您使用IPC(例如getFilesDir()ContentProvider,广播Service),而不是操纵应用程序的文件,不仅仅是为了应用程序的稳定性,为了更好的安全。例如,您可以使用Android的权限系统来调解IPC。

欢迎您将文件放在任何应用可以访问的外部存储上,包括Play商店中大多数120多万个应用以及大多数恶意软件应用。

相关问题