4

我有一个有免费和付费版本的应用程序。我将所有免费版本代码放入一个库中,我从一个新的免费版本项目和付费版本项目中引用了该库。

我注意到库,现在我的项目都有一个属性文件,我的偏好完全停止工作。似乎取决于代码在哪个命名空间中执行,当您查询 SharedPreferences 时,它会得到不同的结果。

处理这个问题的最佳方法是什么?到目前为止,这两个应用程序都具有相同的偏好,但我可能会在以后扩展付费版本并添加免费版本中不存在的偏好。

4

1 回答 1

3

我假设您问的是您的库是否可以与顶级应用程序共享首选项,而不是免费版本是否可以与完整版本共享。

api 文档提到你不能在给定进程之外共享首选项,所以有可能因为你(可能)有两个不同的包(一个用于 lib,一个用于顶级),你在库中获得的首选项与顶级应用程序来自不同的文件?

您可以通过在 /data/data/your-package 中浏览手机存储来查看顶级应用程序和库的首选项文件。您可能会发现每个文件都有不同的首选项文件,我认为这意味着您无法在库/应用程序之间共享首选项。

您可以通过仅从顶级应用程序读取和写入首选项并创建一个接口将这些首选项传递到库来绕过这些限制。如果您的库仅显示来自顶层的值,那么库将不必访问首选项,因此您的所有首选项访问都是从一个地方完成的。

此外,这将允许您对完整和免费有不同的偏好(无论如何这是默认行为,因为它们将存储在单独的偏好文件中),然后您可以根据版本将正确的信息发送到库。

于 2010-08-18T18:19:40.827 回答