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'"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值