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);
相关文章:
Android 12系统源码_设备设置(一)Settings介绍
前言 Settings 类是一个用于访问和管理设备设置的关键类,而作为系统开发人员,经常需要用这个类来做一些系统设备设置,而Settings里面存在着好几个处理不同领域的设备设置类,那么如何才能结合自己的业务场景正确选择使用这些设备设…...
如何查看GD32 Keil和IAR工程的map文件
我们在设计调试程序时,往往需要知道一个函数或一个变量它在MCU中具体所在的地址以及所占用的空间大小,这时候就需要查看map文件。 那么什么是map文件呢?map文件是编译器编译工程后生成的一个文件,文件会有很多信息,比…...
1Panel安装命令脚本大全,多Linux操作系统版本
1Panel安装命令脚本大全,包括RedHat、CentOS、Ubuntu、Debian和openEuler等linux操作系统,码笔记整理1Panel安装命令脚本清单: RedHat/CentOS安装命令: curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh…...
校园电动车安全监控和调度系统-计算机毕业设计源码13028
摘要 校园电动车安全监控和调度系统是为了确保校园内电动车的安全和高效运行而设计的。该系统通过安装在电动车上的监控设备,实时监测电动车的运行状态,包括速度、位置、电池电量等,一旦发现异常情况,系统会立即发出警报并通知相关…...
【LLM之Agent】ReAct论文阅读笔记
研究背景 论文介绍了 “ReAct” 范式,该范式旨在融合推理和行动的功能,通过让大型语言模型(LLMs)生成既包括言语推理轨迹又包括行动序列的输出,解决多种语言推理和决策任务。这种方法允许模型在与外部环境(…...
LeetCode 125. 验证回文串
更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。 组队打卡,更多解法等你一起来参与哦! LeetCode 125. 验证回文串,难度简单。 双指针 解题思路: 遍历字符串,将所有大写字符转换为小写字符、并移除所…...
IT审计必看!对比旧版,CISA考试改版升级亮点和重点内容是什么?
官方通知,今年8月1日,CISA新版考纲正式上线,旧版在7月23日后就无法约考了。 艾威培训邀请了国内知名的IT审计CISA授课老师吴老师来为大家详细讲解CISA新版考纲的变化 目前第28th版教材只有英文版,中文版尚未发布。我们艾威经验丰…...
充电宝哪个牌子公认质量好?哪家充电宝好用?4款口碑好充电宝
在如今这个电子设备不离手的时代,充电宝成为了我们生活中的必备品。然而,面对市场上琳琅满目的充电宝品牌和型号,选择一款质量可靠、性能出色的充电宝并非易事。大家都在问:充电宝哪个牌子公认质量好?哪家充电宝好用&a…...
Python实现图像添加水印的方法
1. 简介 在日常图像处理中,为图片添加水印是一项常见任务。有多种方法和工具可供选择,而今天我们将专注于使用Python语言结合PIL库批量添加水印。 需要注意的是,所选用的图片格式不应为JPG或JPEG,因为这两种格式的图片不支持透明…...
MemFire Cloud: 一种全新定义后端即服务的解决方案
在这个快节奏的互联网时代,开发者们最希望的就是能够省时省力地完成项目,快速上线。然而,搭建服务、开发接口API、处理各种后端问题,往往让人头疼不已。别担心,现在有了MemFire Cloud,一款为懒人开发者量身…...
职业教育软件测试实验实训室建设应用案例
在信息化高速发展的今天,软件测试作为保障软件质量的关键环节,其重要性日益凸显。为满足职业教育对软件测试人才的培养需求,提高学生的实践能力和职业素养,唯众倾力打造了一款先进的软件测试实验实训室,并成功应用于多…...
如何判断一个js对象为数组类型
如何判断一个js对象为数组类型? 能想到的最常见的intanceof是吗?开始是这么认为,但是不是哈,看下面的解释,也没有太明白,暂且记住吧 综上,判断js对象为数组的两种方式 Array.isArray([]) // trueObject.prototype.toString.call([]) ‘[object Array]’ //true...
Nacos2.X 配置中心源码分析:客户端如何拉取配置、服务端配置发布客户端监听机制
文章目录 Nacos配置中心源码总流程图NacosClient源码分析获取配置注册监听器 NacosServer源码分析配置dump配置发布 Nacos配置中心源码 总流程图 Nacos2.1.0源码分析在线流程图 源码的版本为2.1.0 ,并在配置了下面两个启动参数,一个表示单机启动&#…...
phpstudy框架,window平台,如何开端口给局域网访问?
Windows平台上使用phpstudy框架开端口给同事访问,主要涉及到几个步骤:查看并确认本机IP地址、配置phpstudy及网站项目、开放防火墙端口以及确保同事能够通过局域网访问。以下是详细的步骤说明: 1. 查看并确认本机IP地址 首先,需…...
高性能Python网络框架实现网络应用详解
概要 Python作为一种广泛使用的编程语言,其简洁易读的语法和强大的生态系统,使得它在Web开发领域占据重要位置。高性能的网络框架是构建高效网络应用的关键因素之一。本文将介绍几个高性能的Python网络框架,详细描述它们的特点、使用场景及具体示例代码,帮助高效实现网络应…...
万字学习——DCU编程实战
参考资料 2.1 DCU软件栈(DCU ToolKit, DTK) DCU 开发与使用文档 (hpccube.com) DCU软件栈 DCU的软件栈—DCU Toolkit(DTK) HIP(Heterogeneous-Compute Interface for Portability)是AMD公司在2016年提出…...
Neo4j 图数据库 高级操作
Neo4j 图数据库 高级操作 文章目录 Neo4j 图数据库 高级操作1 批量添加节点、关系1.1 直接使用 UNWIND 批量创建关系1.2 使用 CSV 文件批量创建关系1.3 选择方法 2 索引2.1 创建单一属性索引2.2 创建组合属性索引2.3 创建全文索引2.4 列出所有索引2.5 删除索引2.6 注意事项 3 清…...
《RWKV》论文笔记
原文出处 [2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org) 原文笔记 What RWKV(RawKuv):Reinventing RNNs for the Transformer Era 本文贡献如下: 提出了 RWKV 网络架构,结合了RNNS 和Transformer 的优点,同…...
相机光学(二十九)——显色指数(Ra)
显指Ra是衡量光源显色性的数值,表示光源对物体颜色的还原能力。显色性是指光源对物体颜色的呈现能力,即光源照射在同一颜色的物体上时,所呈现的颜色特性。通常用显色指数(CRI)来表示光源的显色性,而显指Ra是…...
【Swoole 的生命周期,文件描述符,协程数量,以及默认值】
目录 Swoole 的生命周期 Swoole 文件描述符(FD)缓存 Swoole设置协程的数量 Swoole 默认值 Swoole 是一个基于 PHP 的高性能网络通信引擎,它采用 C 编写,提供了协程和高性能的网络编程支持。Swoole 支持多种网络服务器和客户端…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
