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

标签 android android-sharedpreferences

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

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

例子

模块一:

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

模块二:

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

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

最佳答案

您可以创建一个通用的 :core 模块并在该模块中添加所有依赖项。

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

PrefHelpers 类放在 :core 模块中,以便从任何模块访问它们或 您可以使用 BuildConfig.APPLICATION_ID 获取的公共(public)包名称配置 sharedpreference。

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

可以替换为

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

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

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

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

关于具有不同模块的Android项目(sharedPreferences),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481240/

相关文章:

java - 解析未启用本地数据存储

android - 如何在 Android 中使用 FirebaseUI 检索用户的姓名和姓氏?

android - 如何检查 PreferenceActivity 中的输入并防止存储无效值?

android - 无法立即从共享首选项中获取值(value)

java - 尝试将 GSON 与自己的类一起使用时出错

java - 在同一轴上平移和旋转时出现奇怪的行为

android - 在 TYPE_SYSTEM_ALERT AND TYPE_SYSTEM_OVERLAY 之间切换,并捕获无法正常工作的触摸事件

java - 使用 SAX Parser,获取属性的值

Android SharedPreferences 用于 shared_prefs 目录之外的文件