不能使用android:sharedUserId吧

时间:2013-03-18 16:34:37

标签: android sharedpreferences

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

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

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

2 个答案:

答案 0 :(得分:0)

  

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

这不符合你的目标:

  

当一个应用程序未安装时,应为其他应用程序保留设置

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

您的选择是:

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

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

  3. 切换到应用内购买,因此您没有单独的免费/付费应用,或

  4. 放弃您的“两个应用应该分享他们的设置”目标

答案 1 :(得分:0)

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

如果您有控制权,那么快速的方法是将应用程序的所有uid更改为相同的文件,并使用文件api来读取和写入文件或数据库。使用数据库距离使用内容提供商只有一步之遥......这可能是最正确的解决方案。