Android L (5.1)及以前的版本
Settings参数保存在 /data/data/com.android.providers.settings/databases/settings.db里,里面有三个表global, system, secure.
通常这样查看数据
adb shell sqlite3 data/data/com.android.providers.settings/databases/settings.db "select * from secure"
或者adb pull settings.db到本地,然后用sqlite expert打开即可。
Android M (6.0)开始出现变化
不同用户放不同的路径下,如果没有创建新用户,则在/data/system/users/0下
settings_global.xml, settings_system.xml, settings_secure.xml
直接修改例子
adb shell settings get global captive_portal_server
adb shell settings put global captive_portal_server 0
添加数据库中的默认数据在:
在Settings.System添加一个自定义的全局变量 Settings.Java文件位于frameworks\base\core\java\android\provider下,打开该文件,搜索关键词 SETTINGS_TO_BACKUP ,共有两处,一处是在Settings里面,另一处在内部类Settings.System里面,在SETTINGS_TO_BACKUP数组上面添加自定义变量,同时在该数组里面添加自定义变量名称,Settting和内部类System都需要添加(共四个地方),比如自定义系统变量SYSTEM_ZWH:
public static final String SYSTEM_ZWH = "system_zwh"; Public static final String[] SETTINGS_TO_BACKUP = { ... SYSTEM_ZWH, ... }然后,在代码中我们就可以通过对于的get和put方法对该值进行读取和写入操作了。
数据库中的默认数据在frameworks/base/packages/SettingsProvider/res/values/defaults.xml中定义
通过frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.Java对数据库结构及初始值进行初始化。
如果要在系统中添加默认设置,需要如下步骤(以带物流键盘的系统中默认打开软键盘为例):
1、在defaults.xml中为新加的数据定义一个默认值
<integer name="show_ime_with_hard_keyboard">1</integer>
2、在DatabaseHelper.java中的loadSecureSettings(SQLiteDatabase db)方法中加入新字段的添加代码
loadStringSetting(stmt, Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, R.string.show_ime_with_hard_keyboar);
3、重新编译