Xposed 模块数据存储
这是一个自动对接
SharedPreferences
和XSharedPreferences
的高效模块数据存储解决方案。
我们需要存储模块的数据,以供宿主调用,这个时候会遇到原生 Sp
存储的数据互通阻碍。
原生的 Xposed
给我们提供了一个 XSharedPreferences
用于读取模块的 Sp
数据。
在 Activity 中使用
这里描述了在
Activity
中装载YukiHookModulePrefs
的场景。
通常情况下我们可以这样在 Hook APP (宿主) 内对其进行初始化。
示例如下
XSharedPreferences(BuildConfig.APPLICATION_ID)
有没有方便快捷的解决方案呢,此时你就可以使用 YukiHookAPI
的扩展能力快速实现这个功能。
当你在模块中存储数据的时候,若当前处于 Activity
内,可以使用如下方法。
示例如下
modulePrefs.putString("test_name", "saved_value")
当你在 Hook APP (宿主) 中读取数据时,可以使用如下方法。
示例如下
val testName = prefs.getString("test_name", "default_value")
你不需要考虑传入模块的包名以及一系列复杂的权限配置,一切都交给 YukiHookModulePrefs
来处理。
若要实现存储的区域划分,你可以指定每个 prefs
文件的名称。
在模块的 Activity
中这样使用。
示例如下
// 推荐用法
modulePrefs("specify_file_name").putString("test_name", "saved_value")
// 也可以这样用
modulePrefs.name("specify_file_name").putString("test_name", "saved_value")
在 Hook APP (宿主) 中这样读取。
示例如下
// 推荐用法
val testName = prefs("specify_file_name").getString("test_name", "default_value")
// 也可以这样用
val testName = prefs.name("specify_file_name").getString("test_name", "default_value")
若你的项目中有大量的固定数据需要存储和读取,推荐使用 PrefsData
来创建模板。
小提示
更多功能请参考 YukiHookModulePrefs、PrefsData。
在 PreferenceFragment 中使用
这里描述了在
PreferenceFragment
中装载YukiHookModulePrefs
的场景。
若你的模块使用了 PreferenceFragmentCompat
,你现在可以将其继承类开始迁移到 ModulePreferenceFragment
。
特别注意
你必须继承 ModulePreferenceFragment 才能实现 YukiHookModulePrefs 的模块存储功能。
小提示
更多功能请参考 ModulePreferenceFragment。