当前位置: 首页 > news >正文

Android 12系统源码_设备设置(一)Settings介绍

前言

Settings 类是一个用于访问和管理设备设置的关键类,而=作为系统开发人员,经常需要用这个类来做一些系统设备设置,而Settings里面存在着好几个处理不同领域的设备设置类,那么如何才能结合自己的业务场景正确选择使用这些设备设置类呢?这就需要我们先了解这些类的作用和使用场景,本篇文章我们将会结合系统源码来梳理一下和Setting相关的知识。

一、Settings简介

在 Android 开发中,Settings 类是用于访问和管理设备设置的核心类之一。它位于 android.provider 包中,提供了静态常量和方法来操作三种不同类型的设备设置,Settings类中存在着四个继承自NameValueTable的内部静态类。

base/core/java/android/provider/Settings.java

public final class Settings {public static class NameValueTable implements BaseColumns {}public static final class System extends NameValueTable {}public static final class Secure extends NameValueTable {}public static final class Global extends NameValueTable {}public static final class Config extends NameValueTable {}
}

Settings.System、Settings.Secure、Settings.Global、Settings.Config这四个内部类各自负责着不同类型的设备设置。

1、Settings.Global:
作用:用于管理设备的全局设置,这些设置通常是跨所有用户的,对所有应用程序可见且具有全局影响。
例子:Wi-Fi状态、自动时间、ADB调试状态、USB调试状态等。

2、Settings.System:
作用:用于管理设备的系统设置,包括控制设备的行为和外观。
例子:屏幕亮度、声音设置、时钟格式、振动设置等。

3、Settings.Secure:
作用:用于管理设备的安全设置和用户首选项,这些设置对用户的隐私和设备的安全性有直接影响。
例子:设备的锁屏方式、帐户和同步设置、位置提供程序设置等。

4、Settings.Config:
作用:这是一个较为特殊的类,用于读取和设置与设备配置相关的信息。
例子:设备的本地化语言、地区、键盘设置等。
权限:访问或修改这些配置通常需要相应的权限,例如 CHANGE_CONFIGURATION。

二、Settings设备设置属性的读写

1、Settings.Global
权限:访问或修改全局设置通常需要 WRITE_SETTINGS 权限;所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限
对应xml路径:/data/system/users/0/settings_global.xml

  • adb读写:
settings get global 系统属性key 或者 settings list global |grep 系统属性key
settings put global 系统属性key 系统属性值
settings delete global 系统属性key 
  • 代码读写:
Settings.Global.getLong(context.getContentResolver(), key, defaltValue);
Settings.Global.putLong(mContext.getContentResolver(), key, value);

2、Settings.System
权限:访问或修改某些系统设置可能需要 WRITE_SETTINGS 权限;所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;
对应xml路径:/data/system/users/0/settings_system.xml

  • adb读写:
settings get system 系统属性key 或者 settings list system |grep 系统属性key
settings put system 系统属性key 系统属性值
  • 代码读写:
Settings.System.getLong(context.getContentResolver(), key, defaltValue);
Settings.System.putLong(mContext.getContentResolver(), key, value);

3、Settings.Secure
权限:访问或修改某些安全设置可能需要 WRITE_SECURE_SETTINGS 权限;安全性的用户偏好系统设置,第三方APP有读没有写的权限。
对应xml路径:/data/system/users/0/settings_secure.xml

  • adb读写:
settings get secure 系统属性key 或者 settings list secure |grep 系统属性key
settings put secure 系统属性key 系统属性值
  • 代码读写:
Settings.Secure.getLong(context.getContentResolver(), key, defaltValue);
Settings.Secure.putLong(mContext.getContentResolver(), key, value);
http://www.lryc.cn/news/396373.html

相关文章:

  • 如何查看GD32 Keil和IAR工程的map文件
  • 1Panel安装命令脚本大全,多Linux操作系统版本
  • 校园电动车安全监控和调度系统-计算机毕业设计源码13028
  • 【LLM之Agent】ReAct论文阅读笔记
  • LeetCode 125. 验证回文串
  • IT审计必看!对比旧版,CISA考试改版升级亮点和重点内容是什么?
  • 充电宝哪个牌子公认质量好?哪家充电宝好用?4款口碑好充电宝
  • Python实现图像添加水印的方法
  • MemFire Cloud: 一种全新定义后端即服务的解决方案
  • 职业教育软件测试实验实训室建设应用案例
  • 如何判断一个js对象为数组类型
  • Nacos2.X 配置中心源码分析:客户端如何拉取配置、服务端配置发布客户端监听机制
  • phpstudy框架,window平台,如何开端口给局域网访问?
  • 高性能Python网络框架实现网络应用详解
  • 万字学习——DCU编程实战
  • Neo4j 图数据库 高级操作
  • 《RWKV》论文笔记
  • 相机光学(二十九)——显色指数(Ra)
  • 【Swoole 的生命周期,文件描述符,协程数量,以及默认值】
  • “不要卷模型,要卷应用”之高考志愿填报智能体
  • k8s离线部署芋道源码后端
  • 图论·Day01
  • hutool ExcelUtil 导出导入excel
  • 打卡第7天-----哈希表
  • 【Linux】WEB网站网络防火墙(WAF软件)Fail2ban:保护服务器免受恶意攻击的必备工具
  • 妙笔生词智能写歌词软件:创新助力还是艺术之殇?
  • 力扣hot100-普通数组
  • 深入浅出Transformer:大语言模型的核心技术
  • MacOS隐藏文件打开指南
  • grafana数据展示