具有不同模块的Android项目(sharedPreferences)

时间:2016-05-27 10:35:16

标签: android android-sharedpreferences

有没有人知道android是否支持在一个项目中编译的多个Android模块之间共享相同的共享首选项?

我有两个共享首选项,目前当我尝试从当前模块之外的共享prefence访问某些数据时,它不起作用并创建一个新的sharedPrefence而不是

例如

第一单元:

 mSharedPreferences = context.getSharedPreferences(
                "pref", Context.MODE_PRIVATE);

第二单元:

 mSharedPreferences = context.getSharedPreferences(
                "pref", Context.MODE_PRIVATE);

它会创建两个首选项文件,而不是两个模块可以共享数据的文件

2 个答案:

答案 0 :(得分:3)

您可以通过设置Context.MODE_WORLD_READABLE(API 17中已弃用)来实现此目的,但非常不推荐。 我会使用ContentProviderBroadcastReceiverService代替在两个模块之间传递数据,正如上面链接在文档中所建议的那样。

答案 1 :(得分:3)

您可以创建一个常见的 :core 模块,并将所有依赖项添加到该模块中。

在所有其他模块中实施 :core 模块。

将您的PrefHelpers类放在 :core 模块中,以从任何模块或  您可以使用可以通过BuildConfig.APPLICATION_ID获得的通用软件包名称来配置sharedpreference。

 mSharedPreferences = context.getSharedPreferences(
                "pref", Context.MODE_PRIVATE);

可以替换为

mSharedPreferences = context.getSharedPreferences(
                BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE);

您可以将模式本身用作Context.MODE_PRIVATE

确保您的BuildConfig来自:core模块。

如果它解决了您的问题,请回复。