Settings中
很多数据通过SettingsProvider存储:
Settings.System.putFloat(getContext().getContentResolver(),
Settings.System.PEAK_REFRESH_RATE, 120f);
还有类似Settings.Secure.put…,Settings.Global.put…
分别对应三个xml,路径如下:
/data/system/users/0/settings_system.xml
/data/system/users/0/settings_secure.xml
/data/system/users/0/settings_global.xml
目前的版本Android15,adb pull /data/system/users/0/settings_system.xml,导出来后,直接打开,是乱码
解决方法:
修改frameworks/base/core/java/android/util/Xml.java
public static final boolean ENABLE_BINARY_DEFAULT = shouldEnableBinaryDefault();
把该值直接写死为false,然后重新编译framework即可.
make framework-minus-apex
adb push
重启
---------------------------------------------20251204更新-------------------------------------------------------
设置里面,数据持久化一般通过如下代码:
Settings.System.putInt(mContext.getContentResolver(), SYSTEM_KEY,
isChecked ? SCREEN_BRIGHTNESS_MODE_AUTOMATIC : DEFAULT_VALUE);
也就是上面所说的最终存到如下文件:
/data/system/users/0/settings_system.xml
/data/system/users/0/settings_secure.xml
/data/system/users/0/settings_global.xml
其实可以不用导出该文件,也就是说不需要去修改frameworks/base/core/java/android/util/Xml.java 该文件,即可知道某个key最近被哪个应用所修改
我一般都是OTA后,有可能出现设置里面的某个开关的状态跟OTA前的不一样,测试会提这种bug,那么就需要看是被哪个应用给修改了,有更快的方法,通过如下命令行就能快速知道:
adb shell dumpsys settings system
找到对应的key,会有类似如下输出
_id:182 name:screen_brightness_mode pkg:com.android.settings value:0 default:0 defaultSystemSet:true
即可看到该值最近被Settings所修改,如果pkg:android,则表示是framework修改的.
1426

被折叠的 条评论
为什么被折叠?



