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

平台:Mstar    系统版本:Android 8.0

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

 

1.\frameworks\base\packages\SettingsProvider\res\values\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>

 

2.\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);

 

3.\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

 

上一篇:学习-Java类和对象之对象数组(22)


下一篇:# python 常用库