Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 处理存储在库中的共享首选项_Android_Sharedpreferences - Fatal编程技术网

Android 处理存储在库中的共享首选项

Android 处理存储在库中的共享首选项,android,sharedpreferences,Android,Sharedpreferences,我有一个应用程序,它有免费版和付费版。我将所有免费版本代码放入一个库中,我从一个新的免费版本项目和付费版本项目中引用了该库 我注意到这个库,现在我的项目都有一个属性文件,我的首选项完全停止工作。看起来,根据代码在哪个命名空间中执行,当您查询SharedReference时,它会得到不同的结果 处理这个问题的最好方法是什么?这两个应用程序的首选项目前都相同,但我可能会在以后扩展付费版本,并添加免费版本中不存在的首选项。我假设您询问的是您的库是否可以与顶级应用程序共享首选项,而不是免费版本是否可以与

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

我注意到这个库,现在我的项目都有一个属性文件,我的首选项完全停止工作。看起来,根据代码在哪个命名空间中执行,当您查询SharedReference时,它会得到不同的结果


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

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

api文档提到,您不能在给定进程之外共享pref,因此,由于您(可能)有两个不同的包(一个用于lib,一个用于顶级),您在库中获得的pref与顶级应用程序中获得的pref是否可能来自不同的文件

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

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


此外,这将允许您对“完全”和“免费”有不同的首选项(这是默认行为,因为它们将存储在单独的首选项文件中),然后您可以根据版本将适当的信息发送到库中。

哦,对不起。这就是为什么没有人回答?我不知道我应该这么做。你是对的,这里有两个首选项文件。一个在库中,一个在应用程序中。为了读取/写入库首选项,我在库中围绕从PreferenceManager.GetDefaultSharedReferences返回的SharedReferences创建了一个包装类。要读取/写入特定于应用程序的任何首选项,我使用非库类中调用PreferenceManager.GetDefaultSharedReferences返回的SharedReferences。Scienceprodigy,你能发布一些代码说明你是如何实现这一点的吗?