Android中的Settings.System, Settings.Secure和Settings.Global:区别与用途

📢 1. 职业规划篇
来聊聊安卓职业规划?整机开发大专能做么?
📢 2.基础篇
基础篇.前言
基础篇.编译环境搭建
基础篇.源码目录简介
基础篇.系统 mk_bp 讲解
基础篇.开机动画定制
基础篇.定制桌面壁纸、导航方式
基础篇.系统属性、api 使用
基础篇.名称修改、名词介绍
基础篇.用 bugreport 带你看 Crash 和 ANR
基础篇.Provision 源码分析

📢 3. 系统应用篇
系统应用篇.开机向导制作一
系统应用篇.开机向导制作二
系统应用篇.Settings 导航切换分析
系统应用篇.开机向导导航切换一
系统应用篇.开机向导导航切换二
系统应用篇.gms 制作集成
系统应用篇.开机向导适配 GMS
系统应用篇.Launcher3 结构剖析一
系统应用篇.Launcher3 结构剖析二
系统应用篇.Launcher3 结构剖析三
系统应用篇.Launcher3 图标加载流程一
系统应用篇.Launcher3 图标加载流程二
系统应用篇.Launcher3 桌面布局定制
系统应用篇.解密 Partner、google PAI 机制
系统应用篇.Partner 机制预制壁纸、默认布局
系统应用篇.Launcher 双排 Hotseat 定制一
系统应用篇.Launcher 双排 Hotseat 定制二
系统应用篇.Launcher 双排 Hotseat 定制三
系统应用篇.Launcher Taskbar 简介以及调出
系统应用篇.SystemUI 篇_用工具教会你看布局、进程
系统应用篇.SystemUI 结构讲解一
系统应用篇.SystemUI 结构讲解二
系统应用篇.SystemUI 的启动流程
系统应用篇.SystemUI 导航栏创建一
系统应用篇.SystemUI 导航栏创建二
系统应用篇.SystemUI 自定义导航按键
系统应用篇.SystemUI 快捷面板下拉流程
系统应用篇.SystemUI 定制禁用锁屏下拉通知栏
系统应用篇.SystemUI 通知注册流程
系统应用篇.SystemUI 通知发送流程

📢 4. 系统篇
系统篇.SystemServer 篇_应用与系统进程间关系
系统篇.SystemServer 简介、自定义 Service 服务一
系统篇.SystemServer 简介、自定义 Service 服务二
系统篇.SystemServer 简介、自定义 Service 服务三
系统篇.SystemServer 简介、自定义 Service 服务四
系统篇.SELinux 问题解决套路一
系统篇.SELinux 问题解决套路二
系统篇.ActivityManagerService 简介
系统篇.WindowManagerService 简介一
系统篇.WindowManagerService 简介二
系统篇.PackageManagerService 简介一
系统篇.PackageManagerService 简介二
系统篇.FW 实战 - Letterbox 定制应用方向一
系统篇.FW 实战 - Letterbox 定制应用方向二
系统篇.分屏流程一
系统篇.分屏流程二

📢 5. 性能篇
(省)低内存优化
性能篇 (省). 低内存查杀机制
性能篇 (省).SystemServer 与 LMK 的 socket 通信
性能篇 (省). 内核进程 LMKD
性能篇 (省). 内存分析
性能篇 (省). 内存泄漏定位与解决
(稳)稳定性优化
性能篇 (稳).WatchDog 检测机制一
性能篇 (稳).WatchDog 检测机制二
性能篇 (稳). 深入 Crash 捕获器流程一
性能篇 (稳). 深入 Crash 捕获器流程二
性能篇 (稳). 深入炸弹 ANR 流程一
性能篇 (稳). 深入炸弹 ANR 流程二
(快)开机优化
性能篇 (快). 开机耗时分析
性能篇 (快). 开机耗时优化
性能篇.实战优化方案分享
framework交流,答疑:251662478

区别:Settings.System、Settings.Secure 和 Settings.Global

在Android开发中,Settings.SystemSettings.SecureSettings.Global 是用于访问设备设置的三种不同方式。它们之间存在以下区别:

1. Settings.System

  • 用于存储应用程序的偏好设置,如音量、屏幕亮度等。
  • 可被用户和应用程序访问,但需要权限。
  • 适用于应用程序级别的设置,可以通过 SharedPreferencesPreferenceActivity 访问。
// 读取系统亮度设置 
int brightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); 

2. Settings.Secure

  • 用于存储一些敏感的系统设置,例如设备的安全性设置。
  • 只能被系统或授予权限的应用程序访问。
  • 适用于存储一些需要保护的系统级设置,如设备所有者信息、安全设置等。
// 读取设备的安全设置 
String lockPattern = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCK_PATTERN);

3. Settings.Global

  • 用于存储全局设置,可被所有应用程序访问。
  • 包含一些影响整个系统的设置,如自动时间更新、USB调试等。
// 读取USB调试状态 
int adbEnabled = Settings.Global.getInt(getContentResolver(), Settings.Global.ADB_ENABLED, 0); 

根据需求选择合适的设置类型进行操作,确保数据的安全性和正确性。


在Android应用程序开发中,了解这三种设置类型的区别至关重要。通过合理的选择和使用,可以确保应用程序对设备设置的操作行为符合安全性和隐私保护的要求。同时,深入理解这些设置类型还有助于开发者更好地控制和管理应用程序中的配置信息。

希望以上信息能够帮助您更好地理解 Settings.SystemSettings.SecureSettings.Global 之间的区别,并在Android开发中正确应用这些设置类型。

欢迎入群技术交流,QQ群:251662478

在这里插入图片描述

<think>好的,我现在需要帮助用户了解或开发Android Settings相关的框架,特别是关于Settings Framework的开发文档或源码解析。首先,用户提到的参考资料里有三个引用,我需要仔细看看这些引用是否相关,并从中提取有用的信息。 首先,引用[1]提到了Android Settings解析,包括SettingsIntelligenceSettingsProvider,这可能涉及到Settings应用的结构底层数据提供者。引用[2]是关于Android系统开发的指导,提到需要研究系统服务的源码,比如ActivityManagerServiceWindowManagerService,这可能对理解Settings框架有帮助。引用[3]则介绍了源码目录中的data目录,里面包含资源文件,比如字体、声音等,这可能Settings的UI资源有关。 用户的需求是寻找开发文档或源码解析,但可能官方文档不够详细,所以需要依赖源码分析相关指南。我需要整理出Settings框架的主要组成部分,并指出源码的位置,以及如何分析这些代码。 首先,Android Settings应用的结构可能分为应用层(UI部分)框架层(系统服务)。应用层可能位于packages/apps/Settings,而框架层可能涉及frameworks/base中的相关服务,比如SettingsProvider。需要指出这些模块的位置,并说明如何查阅源码。 其次,SettingsProvider作为系统Provider,处理设置的存储访问,这部分源码可能在frameworks/base/packages/SettingsProvider。需要解释它的作用,比如存储系统设置、安全配置等,并给出关键类,如Settings.java。 然后,系统服务中的Settings相关的服务可能包括DevicePolicyManager,这些服务的管理逻辑可能在frameworks/base/services/core/java/com/android/server目录下,例如DevicePolicyManagerService。 另外,资源文件的位置也很重要,比如data目录中的资源,如布局字符串,这些可能在packages/apps/Settings/res下,用户可能需要修改这些资源来自定义界面。 开发建议方面,用户可能需要学习如何定制Settings模块,比如添加新设置项或修改现有逻辑。需要指导他们如何修改布局文件,添加自定义Preference,或者修改SettingsProvider的逻辑。 此外,用户可能需要调试测试他们的修改,比如使用adb命令访问设置项,或者查看数据库内容。例如,使用settings命令或查询SettingsProvider的数据库。 最后,生成的相关问题需要围绕Settings框架的组成部分、源码分析步骤、定制方法、调试工具等,帮助用户深入理解。 现在需要确保回答结构清晰,分点说明源码位置、关键模块、开发建议调试方法,并正确引用提供的资料。同时,使用中文回答,行内公式用$...$,独立公式用$$...$$,但这里可能不太涉及数学公式,所以重点放在代码块结构上。</think>### Android Settings Framework 开发源码解析 Android Settings Framework 是系统设置功能的核心,涉及应用层交互、数据存储系统服务整合。以下是开发源码分析的关键点: --- #### 一、源码结构核心模块 1. **Settings 应用层源码** - **路径**: `packages/apps/Settings/` - **功能**: 包含用户界面(如设置主界面、Wi-Fi、蓝牙等子模块),使用 `PreferenceFragment` 管理交互逻辑。 - **关键类**: - `Settings.java`: 入口 Activity - `WirelessSettings.java`: 网络相关设置 - `SecuritySettings.java`: 安全配置[^1] 2. **SettingsProvider 数据存储** - **路径**: `frameworks/base/packages/SettingsProvider/` - **作用**: 管理系统设置的持久化存储(如系统全局配置、安全策略),通过 `ContentProvider` 提供访问接口。 - **关键类**: - `Settings.java`: 定义 `System`, `Secure`, `Global` 三类命名空间的键值对[^3]。 - **数据库路径**: `/data/data/com.android.providers.settings/databases/settings.db` 3. **系统服务整合** - **路径**: `frameworks/base/services/core/java/com/android/server/` - **示例**: - `DevicePolicyManagerService.java`: 设备策略管理(如企业级限制) - `WifiService.java`: Wi-Fi 功能底层控制[^2] --- #### 二、开发定制指南 1. **添加新设置项** - **步骤**: 1. **UI 层**: 在 `res/xml/` 下新增 Preference XML 文件,定义布局。 2. **逻辑层**: 继承 `PreferenceFragment`,绑定点击事件。 3. **数据层**: 通过 `Settings.System.putInt()` 等方法写入系统数据库。 - **代码片段**: ```java // 添加开关控件 SwitchPreference customPref = findPreference("custom_key"); customPref.setOnPreferenceChangeListener((preference, newValue) -> { Settings.System.putInt(getContentResolver(), "CUSTOM_SETTING", (Boolean) newValue ? 1 : 0); return true; }); ``` 2. **修改系统默认设置** - **路径**: `frameworks/base/packages/SettingsProvider/res/values/defaults.xml` - **示例**: 调整默认屏幕超时时间: ```xml <integer name="def_screen_off_timeout">300000</integer> <!-- 5分钟 --> ``` 3. **跨进程通信机制** - **Binder AIDL**: Settings 通过 `SettingsProvider` 提供的 `ContentResolver` 系统服务(如 `PowerManagerService`)交互[^2]。 --- #### 三、调试分析工具 1. **ADB 命令调试** - 查看当前系统设置: ```bash adb shell settings get system screen_off_timeout ``` - 修改设置值: ```bash adb shell settings put secure bluetooth_name "MyDevice" ``` 2. **数据库直接访问** ```bash adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db > SELECT * FROM system WHERE name='screen_off_timeout'; ``` 3. **日志过滤** ```bash adb logcat -s SettingsProvider # 监控设置数据变更 ``` --- #### 四、参考文档进阶学习 1. **官方资源**: - [Android 开发者设置指南](https://developer.android.com/guide/topics/ui/settings) - [AOSP 源码查看](https://android.googlesource.com/platform/packages/apps/Settings/) 2. **书籍推荐**: - *《Android 系统源码情景分析》*: 详解系统服务 Framework 层设计。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值