Android Setting数据保存与定义总结

最近想给Android 的setting做一个总结,进行相关工作时便于查阅。
我们通常会使用以下方法进行设置值的读写,列如我们读写Global中的 自由窗口启动模式DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT

ContentResolver resolver = mContext.getContentResolver();
 Settings.Global.getInt(resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0);
 Settings.Global.putInt(resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 1);

setting的保持数据位于/data/system/users/0,存在以下三个用于保存数据的xml文件,settings_secure.xmlsettings_system.xmlsettings_global.xml其中

Global<settings_global.xml>:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;
System<settings_system.xm>:包含各种各样的用户偏好系统设置;
Secure<settings_secure.xml>:安全性的用户偏好系统设置,第三方APP有读没有写的权限。
其它<package-restrictions.xml>用于记录文件打开方式apk设置

具常量的定义可查阅./frameworks/base/core/java/android/provider/Settings.java
另外调试设置时我们可以在shell输入以下命令获取相关设置值

adb shell settings list system
adb shell settings list global
adb shell settings list secure

通过以下命令进行设置值

adb shell settings put [system|global|secure] [setting key] [setting value]

可以通过以下命令获取值

adb shell settings get [system|global|secure] [setting key]

常用的设置

#开启ADB
settings put global adb_enabled 1
#允许安装非应用市场APK
settings put secure install_non_market_apps 1

键值含义参考如下文档
https://developer.android.google.cn/reference/android/provider/Settings.System?hl=en

定义系统初始默认设置
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

注意frameworks中还有一类操作如

context.getResources().getBoolean(com.android.internal.R.bool.xxx);

该定义在frameworks/base/core/res/res/values/config.xml中进行定义,如
<bool name="xxx">true</bool>
并且需要在frameworks/base/core/res/res/values/symbols.xml中进行定义如:
<java-symbol type="bool" name="xxx" />
该操作为常量的定义,与应用开发中在values中定义的效果一致。

发表回复

CAPTCHAis initialing...