zoukankan      html  css  js  c++  java
  • Android:系统设置出厂默认值配置

    平台:Mstar    系统版本:Android 8.0

    1.frameworksasecorejavaandroidproviderSettings.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.frameworksasepackagesSettingsProvider esvaluesdefaults.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.frameworksasepackagesSettingsProvidersrccomandroidproviderssettingsDatabaseHelper.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.devicemstarsugarcaneoverlayframeworksasepackagesSettingsProvider esvaluesdefaults.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	argetproductsugarcanesystempriv-appSettingsProviderSettingsProvider.apk system/priv-app/SettingsProvider/
    adb shell "rm data/system/users/0/settings_global.xml"
    adb reboot
  • 相关阅读:
    labVIEW学习——属性节点
    MATLAB学习
    WinForm中键盘按键问题
    TextBox的智能感知
    使用脚本操作UpdatePanel中控件的问题
    DBNull.Value,null,String.Empty之间的区别和联系
    Hotmail如何对已经存在的邮件地址进行更改?
    第一个hibernate项目
    html静态实现左边导航右边显示链接页面
    Struts2学习
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/12835025.html
Copyright © 2011-2022 走看看