Android 处理存储在库中的共享首选项
我有一个应用程序,它有免费版和付费版。我将所有免费版本代码放入一个库中,我从一个新的免费版本项目和付费版本项目中引用了该库 我注意到这个库,现在我的项目都有一个属性文件,我的首选项完全停止工作。看起来,根据代码在哪个命名空间中执行,当您查询SharedReference时,它会得到不同的结果Android 处理存储在库中的共享首选项,android,sharedpreferences,Android,Sharedpreferences,我有一个应用程序,它有免费版和付费版。我将所有免费版本代码放入一个库中,我从一个新的免费版本项目和付费版本项目中引用了该库 我注意到这个库,现在我的项目都有一个属性文件,我的首选项完全停止工作。看起来,根据代码在哪个命名空间中执行,当您查询SharedReference时,它会得到不同的结果 处理这个问题的最好方法是什么?这两个应用程序的首选项目前都相同,但我可能会在以后扩展付费版本,并添加免费版本中不存在的首选项。我假设您询问的是您的库是否可以与顶级应用程序共享首选项,而不是免费版本是否可以与
处理这个问题的最好方法是什么?这两个应用程序的首选项目前都相同,但我可能会在以后扩展付费版本,并添加免费版本中不存在的首选项。我假设您询问的是您的库是否可以与顶级应用程序共享首选项,而不是免费版本是否可以与完整版本共享首选项 api文档提到,您不能在给定进程之外共享pref,因此,由于您(可能)有两个不同的包(一个用于lib,一个用于顶级),您在库中获得的pref与顶级应用程序中获得的pref是否可能来自不同的文件 您可以通过在/data/data/your package中浏览手机存储器,查找顶级应用程序和库的首选项文件来检查这一点。您可能会发现,每个应用程序都有不同的首选项文件,我认为这意味着您无法在库/应用程序之间共享首选项 通过从顶级应用程序读取和写入prefs,并创建一个接口将这些prefs传递到库中,您可能可以绕过这些限制。如果您的库只显示了顶层的值,那么库就不必访问prefs,因此您所有的首选项访问都是从一个地方完成的
此外,这将允许您对“完全”和“免费”有不同的首选项(这是默认行为,因为它们将存储在单独的首选项文件中),然后您可以根据版本将适当的信息发送到库中。哦,对不起。这就是为什么没有人回答?我不知道我应该这么做。你是对的,这里有两个首选项文件。一个在库中,一个在应用程序中。为了读取/写入库首选项,我在库中围绕从PreferenceManager.GetDefaultSharedReferences返回的SharedReferences创建了一个包装类。要读取/写入特定于应用程序的任何首选项,我使用非库类中调用PreferenceManager.GetDefaultSharedReferences返回的SharedReferences。Scienceprodigy,你能发布一些代码说明你是如何实现这一点的吗?