1

我知道之前已经发布过类似的问题,但我相信我的确切用例还没有答案。

我有我的 Android 应用程序的试用版和完整版。当用户购买完整版时,两个版本应该共享他们的设置。一个应用程序中的更改也应该显示在另一个应用程序中。卸载一个应用程序时,应为另一个应用程序保留设置。这不是一次性导入,因为用户可能不会卸载试用版应用程序,甚至可以继续使用它。

两个应用程序使用相同的共享用户 ID并在同一进程中运行。但是,当我调用 getFilesDir() 时,返回的目录包含应用程序的包名,因此两个应用程序用于存储文件的目录不同。如何在不使用外部存储的情况下让两个应用程序使用完全相同的文件?

4

2 回答 2

0

如何在不使用外部存储的情况下让两个应用程序使用完全相同的文件?

这将不符合您的目标:

卸载一个应用程序时,应为另一个应用程序保留设置

鉴于该目标,根据定义,您不能使用将在卸载时删除的单个文件,就像用户卸载该应用程序一样,另一个应用程序已损坏。

您的选择是:

  1. 使用外部存储,特别是 getExternalFilesDir()使用or getExternalCacheDir(), or

  2. 让每个应用程序维护自己的文件副本,使用某种机制使更改保持同步,或者

  3. 切换到应用内购买,这样您就没有单独的免费/付费应用,或者

  4. 放弃“两个应用程序都应该共享它们的设置”的目标

于 2013-03-18T16:40:47.607 回答
0

如果您希望在包含所有组件的进程关闭后保留这些首选项,则需要将这些首选项保存到文件或数据库中。

一个快速的方法,如果你有这个在你的控制中,就是将你的应用程序的所有 uid 更改为相同的,并使用文件 api 从文件或数据库中读取和写入。不过,使用数据库与使用内容提供者仅一步之遥……这可能是最正确的解决方案。

于 2013-03-18T16:41:22.937 回答