阅读:6265回复:2

Android SettingsProvider数据存储

楼主#
更多 发布于:2019-07-03 16:31
Android系统用SettingsProvider来保存设置一些系统级别的属性,主要有[system][secure][global]三大类数据属性。

SettingsProvider的源代码在
frameworks/base/packages/SettingsProvider目录下

工作中如果我们想要修改SettingProvider管理的这些数据的默认值,我们可以打开如下文件找到需要的属性进行修改:
SettingsProvider/res/values/defaults.xml
该文件中数据以键值对的方式保存在xml文件中。直接修改即可。

如果要新增一个自定义的数据属性,我们可以在如下文件中添加:
SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

   private void loadSystemSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
            stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
                    + " VALUES(?,?);");


            loadBooleanSetting(stmt, Settings.System.DIM_SCREEN,
                    R.bool.def_dim_screen);
            loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
                    R.integer.def_screen_off_timeout);


            // Set default cdma DTMF type
            loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);


            // Set default hearing aid
            loadSetting(stmt, Settings.System.HEARING_AID, 0);


            // Set default tty mode
            loadSetting(stmt, Settings.System.TTY_MODE, 0);


            loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS,
                    R.integer.def_screen_brightness);
            ... ...
     //add by mark for telesystem shutdown option @20190703
    //String power_shutdown_key = "power_key_definition";
    loadIntegerSetting(stmt, "power_key_definition", R.integer.power_key_define);
    //add end
            ... ...

R.integer.power_key_define这个需要在SettingsProvider/res/values/defaults.xml定义:

   <!-- user interface sound effects -->
    <integer name="power_key_define">1</integer>
    <integer name="def_power_sounds_enabled">1</integer>

==========================================================================
然后我们重新编译烧录固件,怎么验证默认就有了这个属性了,这里给大家介绍一个非常高效的命令(串口或者adb):
settings --user 0 get system power_key_definition
即可查看该项值,如果没有这个属性,那么返回null,如果有,则显示具体的值。

如果想直接快速设置这一项属性为‘1’,可以用如下命令:
settings --user 0 put system power_key_definition 1

最新喜欢:

zhaoyf13zhaoyf...
If you have nothing to lose, then you can do anything.
沙发#
发布于:2019-07-03 16:35
不错,简单明了,非常高效
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
板凳#
发布于:2023-03-16 15:44
/data/system/users/0/settings_secure.xml
/data/system/users/0/settings_system.xml
/data/system/users/0/settings_global.xml
最终都是写入到这些文件里面了
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
游客

返回顶部