相关命令:
adb shell settings get/put global/system/secure //获取 ,设置
adb shell settings list global/system/secure //获取所有
一.涉及的源码库
frameworks/base/packages/SettingsProvider //SettingsProvider.apk
packages/apps/Settings //Setting.apk
frameworks/base/core/java/android/provider //framework.jar
packages/providers/MediaProvider //SettingsProvider.apk
frameworks/base/packages/SettingsLib
二.SettingsProvide分析
1.三种类型的Settings数据
/data/system/users/0/settings_global.xml //global,第三方APP有读没有写的权限
/data/system/users/0/settings_system.xml 三方app可读可写
/data/system/users/0/settings_secure.xml ,第三方APP有读没有写的权限
SettnigsProvider启动时会创建settings.db数据库,然后把所有的默认设置项(defaults.xml)写入到数据库,接着会把数据库中所有的设置项从数据库转移到xml文件中,最后将settings.db删除
2.启动:
SystemServer中的startOtherServices
→mActivityManagerService.installSystemProviders()
加载xml文件流程如下
三.具体定制
1.wifi默认打开
修改 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中def_wifi_on的值为true
对应global wifi_on
2.显示虚拟键盘默认开启
修改 /frameworks/base/packages/SettingsProvider/res/values/defzaults.xml 中的def_show_ime_with_hard_keyboard值为true
对应secure show_ime_with_hard_keyboard
3.默认打开飞行模式
修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中的def_airplane_mode_on为true