Android中的SettingsProvider

一、SettingsProvider

SettingsProvider用来提供设置数据共享,主要用来存放一些Android系统的默认初始值。在Android 6.0版本时,SettingsProvider被重构,Android从性能、安全等方面考虑,把SettingsProvider中原本保存在settings.db中的数据,目前改为全部保存在/data/system/users/0/下的对应xml文件中。

用一句话概括SettingsProvider的作用,SettingsProvider包含全局性、系统级别的用户编好设置。在手机中有一个Settings应用,用户可以在Settings里面做很多设备的设置,这些用户偏好的设置很多就保存在SettingsProvider中。例如,设置锁屏时间等。

1.1 查看与修改

Settings分为三类,分别存储在不同的xml文件中:

settings_system.xml包含各种各样的用户偏好系统设置
settings_global.xml所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限
settings_secure.xml安全性的用户偏好系统设置,第三方APP有读没有写的权限

使用ADB查看:

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

使用ADB获取与修改:

# get方法
adb shell settings get system font_scale
# set方法
adb shell settings put system font_scale 1.6

代码中修改:

Settings.System.putString(getActivity().getContentResolver(), "xxx", "default");

1.2 相关实例

#获取自动锁屏时间
adb shell settings list system | grep timeout                            
screen_off_timeout=300000
 
#设置自动锁屏时间
adb shell settings put system screen_off_timeout 2147483647
 
#全屏沉浸模式(包括状态栏和虚拟按键):
adb shell settings put global policy_control immersive.full=*
 
#沉浸状态栏:
adb shell settings put global policy_control immersive.status=*
 
#沉浸虚拟按键(隐藏后底部上划可以呼出):
adb shell settings put global policy_control immersive.navigation=*
 
#恢复正常模式(如果隐藏了状态栏或者虚拟按键但是又不想用了):
adb shell settings put global policy_control null

1.3 相关源码

状态值进行存储:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
设置的成员定义:frameworks/base/core/java/android/provider/Settings.java
部分的默认值来源于:frameworks/base/packages/SettingsProvider/res/values/defaults.xml
settings代码位置在:frameworks/base/cmds/settings/settings

1.4 与SystemProperties的区别

数据保存方式不同:SystemProperties的数据保存属性文件中(/system/build.prop等),开机后会被加载到system properties store;SettingsProvider的数据保存在文件/data/system/users/0/settings_***.xml或数据库settings.db中;

作用范围不同:SystemProperties可以实现跨进程、跨层次调用,即底层的c/c++可以调用,java层也可以调用;SettingProvider只能能在java层(APP)使用;

公开程度不同:SettingProvider有部分功能上层第三方APP可以直接使用,SystemProperties是系统私有类,第三方app无法直接访问此类中的方法,但是我们可以通过反射间接访问。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-sL1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值