Android系统Settings Provider手册

一、简介

Settings Provider 是一个提供系统设置数据共享的Provider,主要存放Android系统的一些默认的初始化值。
Settings Provider数据库路径为 /data/data/com.android.providers.settings/databases/settings.db
Settings提供了包含全局的系统级别的设备参数。共有如下三类:

  • Global:全局系统设置,包含始终适用于所有已定义用户的参数;
  • Secure:安全的系统设置,包含应用程序可以读取但不允许写入的系统参数;
  • System:系统设置,包含各种系统参数。

二、访问方式

1. 系统API访问

//查询
//查询System
Settings.System.getInt(ContentResolver cr, String name);
Settings.System.getInt(ContentResolver cr, String name, float def);
Settings.System.getFloat(ContentResolver cr, String name);
Settings.System.getFloat(ContentResolver cr, String name, float def);
Settings.System.getLong(ContentResolver cr, String name);
Settings.System.getLong(ContentResolver cr, String name, float def);
Settings.System.getString(ContentResolver cr, String name);
Settings.System.getString(ContentResolver cr, String name, float def);
//查询Global
Settings.Global.getInt(ContentResolver cr, String name);
Settings.Global.getInt(ContentResolver cr, String name, float def);
Settings.Global.getFloat(ContentResolver cr, String name);
Settings.Global.getFloat(ContentResolver cr, String name, float def);
Settings.Global.getLong(ContentResolver cr, String name);
Settings.Global.getLong(ContentResolver cr, String name, float def);
Settings.Global.getString(ContentResolver cr, String name);
Settings.Global.getString(ContentResolver cr, String name, float def);
//查询Secure
Settings.Secure.getInt(ContentResolver cr, String name);
Settings.Secure.getInt(ContentResolver cr, String name, float def);
Settings.Secure.getFloat(ContentResolver cr, String name);
Settings.Secure.getFloat(ContentResolver cr, String name, float def);
Settings.Secure.getLong(ContentResolver cr, String name);
Settings.Secure.getLong(ContentResolver cr, String name, float def);
Settings.Secure.getString(ContentResolver cr, String name);
Settings.Secure.getString(ContentResolver cr, String name, float def);

//增加或修改
//插入\更新System
Settings.System.putInt(ContentResolver cr, String name, int value);
Settings.System.putFloat(ContentResolver cr, String name, float value);
Settings.System.putLong(ContentResolver cr, String name, long value);
Settings.System.putString(ContentResolver resolver, String name, String value);
//插入\更新Global
Settings.Global.putInt(ContentResolver cr, String name, int value);
Settings.Global.putFloat(ContentResolver cr, String name, float value);
Settings.Global.putLong(ContentResolver cr, String name, long value);
Settings.Global.putString(ContentResolver resolver, String name, String value);
//插入\更新Secure
Settings.Secure.putInt(ContentResolver cr, String name, int value);
Settings.Secure.putFloat(ContentResolver cr, String name, float value);
Settings.Secure.putLong(ContentResolver cr, String name, long value);
Settings.SystemSecureputString(ContentResolver resolver, String name, String value);

2. 数据库访问

cd  /data/data/com.android.providers.settings/databases

#访问数据库
sqlite3 settings.db
#访问system表
select * from system;
select value from system where name=[nameValue];
update system set value=[value] where name=[nameValue]
#访问global表
select * from global;
select value from global where name=[nameValue];
update global set value=[value] where name=[nameValue]
#访问secure表
select * from secure;
select value from secure where name=[nameValue];
update secure set value=[value] where name=[nameValue]

3. 命令行访问

adb shell settings 
  usage:  settings [--user <USER_ID> | current] get namespace key
         settings [--user <USER_ID> | current] put namespace key value
         settings [--user <USER_ID> | current] delete namespace key
         settings [--user <USER_ID> | current] list namespace
 
'namespace' is one of {system, secure, global}, case-insensitive
If '--user <USER_ID> | current' is not given, the operations are performed on the system user.

#访问system
adb shell settings get system [key]
adb shell settings put system [key] [value]
#访问global
adb shell settings get global [key]
adb shell settings put global [key] [value]
#访问secure
adb shell settings get secure [key]
adb shell settings put secure [key] [value]

4. content命令访问

#数据类型: b - boolean, s - string, i - integer, l - long, f - float, d - double

#查询
content query --uri content://settings/secure --projection name:value --where "name='new_setting'" --sort "name ASC"
#查询表
content query --uri content://settings/system
content query --uri content://settings/global
content query --uri content://settings/secure
#查询指定key
content query --uri content://settings/system/[key]
content query --uri content://settings/global/[key]
content query --uri content://settings/secure/[key]

#插入
#布尔型:0-false,1-true
#插入字符串
content insert --uri content://settings/system --bind name:s:aaa --bind value:s:test
#插入整型
content insert --uri content://settings/system --bind name:s:bbb --bind value:i:111
#插入布尔型
content insert --uri content://settings/system --bind name:s:ccc --bind value:b:true

#修改
content update --uri content://settings/secure --bind value:s:newer_value --where "name='new_setting'"

#删除
content delete --uri content://settings/secure --where "name='new_setting'"

AndroidSettingsProvider是一个系统级应用程序,用于管理设备的设置信息。当Android系统升级时,SettingsProvider也会相应地进行升级。 首先,升级会带来一些新的设置选项。随着Android版本的更新,新的功能和特性将被引入到系统中,这些功能和特性将需要对应的设置选项来进行配置。因此,SettingsProvider需要进行升级,以支持这些新的设置选项。 其次,升级还会修复一些已知的问题和漏洞。在旧版本的SettingsProvider中可能存在一些bug或者安全漏洞,这些问题会被逐步修复和解决。升级后的SettingsProvider将包含修复后的代码,以提高系统的稳定性和安全性。 此外,升级还可能会改变SettingsProvider的数据结构或存储方式。为了满足新的需求和功能,SettingsProvider的数据存储可能需要进行调整和优化。这可能涉及到数据库表结构的更改或者数据存储的格式改变等。 最后,升级还可能会提供更好的性能和响应速度。随着系统的发展,我们对设备的性能和用户体验的要求也在不断提高。升级后的SettingsProvider可能会经过优化,以提供更快的数据查询和更新速度,从而使用户的设置操作更加流畅和高效。 综上所述,Android系统的升级会带来SettingsProvider的升级,以支持新的设置选项、修复问题和漏洞、改变数据结构和存储方式,并提供更好的性能和响应速度。这些升级将不断提高Android设备的功能和使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值