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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。