求xposed hook免重启修改配置的方案
本帖最后由 ouyang12138 于 2024-1-30 15:01 编辑使用的xsharedpreference进行配置数据的存取,即使设置了数据监听回调,在变更时调用xsharedpference.reload,hook读取到的配置仍然是修改前的。
但是了解到wxposed模块是可以随时改随时生效的,想了解有什么方法可以实现这种,我是通过模块的activity来设置配置,在宿主中读的
贴下代码
public void setOnSharedPreferenceChangeListener() { if (null == listener) {
listener = new XSharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
LogUtil.PrintLog("onSharedPreferenceChanged", TAG);
xSharedPreferences.reload();
}
};
}
if (xSharedPreferences != null) {
LogUtil.PrintLog("setOnSharedPreferenceChangeListener", TAG);
xSharedPreferences.registerOnSharedPreferenceChangeListener(listener);
}
}public ConfigObject getConfigInApp() {
ConfigObject configObject = null;
try {
configObject = new ConfigObject(
xSharedPreferences.getBoolean("xxx", false),
xSharedPreferences.getBoolean("xxxx", false),
xSharedPreferences.getBoolean("xxxxx", false),
xSharedPreferences.getFloat("xxxxxx", 0f),
xSharedPreferences.getFloat("xxxxxxx", 0f),
xSharedPreferences.getString("xxxxxxxx", ""),
xSharedPreferences.getBoolean("xxxxxxxx", false)
);
} catch (Exception e) {
Log.i(TAG, "getConfigInApp: " + e.getMessage());
}
return configObject;
} Light紫星 发表于 2024-1-25 10:16
lsposed的话,设置xp版本93以上,应该就可以了
是用的lsposed,new xsharedpreference,但是即使监听到了文件变化,用reload,宿主app获取到的还是旧的,只能重启app才能读到新的 lsposed的话,设置xp版本93以上,应该就可以了 看了lsposed 的issue,虽然文档里写支持listener监听修改,但是其实不支持,提了issue但是说不会修复 搞定了,每次调用时reload(不推荐,但是目前没有比较好的监听方式)
页:
[1]