可以参考地址:https://blog.csdn.net/myfriend0/article/details/59107989#查询数据
1.用法
//put get
android.provider.Settings.Global.putInt(context.getContentResolver(), android.provider.Settings.Global.AUTO_TIME, checked); int state = Settings.System.getInt(context.getContentResolver(), Settings.System.AUTO_TIME, 1);
2.权限问题
查阅SettingsProvider的设置项不需要声明任何权限。
修改SettingsProvider需要权限:
- android.permission.WRITE_SETTINGS,Protection level: signature
- Secure数据:android.permission.WRITE_SECURE_SETTINGS,Not for use by third-party applications.
对已Global和Secure模块,还需要关心上文中的isGlobalOrSecureSettingRestrictedForUser()方法设置到的限制
3.数据分类
SettingsProvider对数据进行了分类,分别是Global、System、Secure三种类型,它们的区别如下:
- Global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;
- System:包含各种各样的用户偏好系统设置;
- Secure:安全性的用户偏好系统设置,第三方APP有读没有写的权限。
4.命令查询和设置用法
(主要用于调试和便于bug分析)
#获取亮度是否为自动获取
adb shell settings get system screen_brightness_mode#设置亮度值
adb shell settings put system screen_brightness 150
5.生成数据库位置
Android6.0之后再/data/system/users/0/xxx.xml
settings_global.xml settings_secure.xml settings_system.xml wallpaper_info.xml root@root:/data/system/users/0 #
之前应该在data/data/com.android.providers.settings/databases/settings.db才对