sheldon_blogs

Android:系统设置出厂默认值配置

平台:Mstar    系统版本:Android 8.0

 

1.\frameworks\base\core\java\android\provider\Settings.java

 settings.apk的默认参数是从SettingsProvider  app中读取的,保存在provider中说明是系统全局性的,很多地方都会使用里面的参数。

private static final HashSet<String> MOVED_TO_GLOBAL;
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON);
            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_AP_ON);
            MOVED_TO_GLOBAL.add(Settings.Global.ETHERNET_ON);

 

2.\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

 defaults.xml中有各种setting应用使用的参数,但是只是部分,并不完全, 如果想知道自己修改的参数具体对应的参数名,通过对比 /data/system/users/0/settings_***.xml 文件中修改前后参数的变化即可。

 如配置默认网络状态:有线网络开启、无线关闭、热点开启

    <bool name="def_ethernet_on">true</bool>
    <bool name="def_wifi_on">false</bool>
    <bool name="def_wifi_ap_on">true</bool>

 

3.\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java

 系统出厂默认配置会解析xml中各参数值,绑定到SQLiteStatement:

            loadBooleanSetting(stmt, Settings.Global.ETHERNET_ON,
                    R.bool.def_ethernet_on);

            loadBooleanSetting(stmt, Settings.Global.WIFI_ON,
                    R.bool.def_wifi_on);

            loadBooleanSetting(stmt, Settings.Global.WIFI_AP_ON,
                    R.bool.def_wifi_ap_on);

 

4.\device\mstar\sugarcane\overlay\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

 对于有些系统,为了防止用户修改默认值,会强制重新覆盖默认值,overlay 机制是在源码的 device/xxx/xxx 目录下新建一个 overlay 文件夹(已有的话就不用创建了),添加与 framework 一致的目录和文件,编译时就会将 overlay 下的文件覆盖 frameworks 的文件,从而实现对 frameworks 的修改,一般都是修改图片资源或者存放数据字段的 xml :

    <!-- Enable ethernet -->
    <bool name="def_ethernet_on">true</bool>

    <!-- Enable wifi -->
    <bool name="def_wifi_on">false</bool>

    <!-- Enable ap -->
    <bool name="def_wifi_ap_on">true</bool>

 

部分编译及更新验证,需要删除原来的xml文件,替换 SettingsProvider.apk 重启后会重新加载默认值:

mmm frameworks/base/packages/SettingsProvider/
adb push out\target\product\sugarcane\system\priv-app\SettingsProvider\SettingsProvider.apk system/priv-app/SettingsProvider/
adb shell "rm data/system/users/0/settings_global.xml"
adb reboot

 

posted on   sheldon_blogs  阅读(2451)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2019-05-06 动态库(.so)隐藏函数名
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示