有没有人知道android是否支持在一个项目中编译的多个Android模块之间共享相同的共享首选项?
我有两个共享首选项,目前当我尝试从当前模块之外的共享prefence访问某些数据时,它不起作用并创建一个新的sharedPrefence而不是
例如
第一单元:
mSharedPreferences = context.getSharedPreferences(
"pref", Context.MODE_PRIVATE);
第二单元:
mSharedPreferences = context.getSharedPreferences(
"pref", Context.MODE_PRIVATE);
它会创建两个首选项文件,而不是两个模块可以共享数据的文件
答案 0 :(得分:3)
您可以通过设置Context.MODE_WORLD_READABLE
(API 17中已弃用)来实现此目的,但非常不推荐。
我会使用ContentProvider
,BroadcastReceiver
或Service
代替在两个模块之间传递数据,正如上面链接在文档中所建议的那样。
答案 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
模块。
如果它解决了您的问题,请回复。