关于Settings.Global /Secure/System

本文解析了Android系统中Settings.db的三个主要表:Global、Secure和System,介绍了这些表的功能及如何通过特定方法读写数据。

关于Settings.Global /Secure/System    目前来看区别不大

Settings.db是系统的一个Provider,可以获取或者修改里面的数据值,这几个表都可以存储String,Int等类型的值,数据类型不受限制

系统可能会根据不同的数据进行分类

如果添加自己的数据,写在哪个表里都行,数据的获取和修改是需要的权限以及字段名的长度的限制

直接看代码

 /**
1128     * @hide - Private call() method on SettingsProvider to read from 'system' table.
1129     */
1130    public static final String CALL_METHOD_GET_SYSTEM = "GET_system";
1131
1132    /**
1133     * @hide - Private call() method on SettingsProvider to read from 'secure' table.
1134     */
1135    public static final String CALL_METHOD_GET_SECURE = "GET_secure";
1136
1137    /**
1138     * @hide - Private call() method on SettingsProvider to read from 'global' table.
1139     */
1140    public static final String CALL_METHOD_GET_GLOBAL = "GET_global";
1141
1142    /**
1143     * @hide - User handle argument extra to the fast-path call()-based requests
1144     */
1145    public static final String CALL_METHOD_USER_KEY = "_user";
1146
1147    /** @hide - Private call() method to write to 'system' table */
1148    public static final String CALL_METHOD_PUT_SYSTEM = "PUT_system";
1149
1150    /** @hide - Private call() method to write to 'secure' table */
1151    public static final String CALL_METHOD_PUT_SECURE = "PUT_secure";
1152
1153    /** @hide - Private call() method to write to 'global' table */
1154    public static final String CALL_METHOD_PUT_GLOBAL= "PUT_global";

<think>好的,我现在需要回答用户关于Android的Settings.Global.ADB_ENABLED对应的系统属性名称及其作用的问题。首先,用户提供的引用资料中,引用[2]提到了使用Settings.Global.putInt来设置ADB_ENABLED的值,而引用[3]则讨论了默认开启ADB的方法,包括设置ADB_ENABLED为真。用户想知道这个字段对应的系统属性名称和作用。 首先,我应该确认ADB_ENABLED在Android系统中的位置。根据Android文档,Settings.Global存储的是全局系统设置,对所有用户和应用程序都有效。ADB_ENABLED属于这个类别,因此它对应的系统属性应该是全局的。通常,Android的系统属性会以特定的命名方式存在,比如使用"persist."前缀来保持持久化。 接下来,我需要回忆或查找ADB_ENABLED对应的系统属性名称。根据经验,ADB相关的属性通常是"persist.sys.usb.config"或者类似的,但这里需要更准确的信息。根据用户提供的引用[3]中提到的修改默认ADB enable状态,可能需要修改系统属性来持久化设置。不过,也有可能Settings.Global.ADB_ENABLED直接对应某个属性。 根据Android源码,Settings.Global中的值通常通过SystemProperties进行同步。例如,ADB_ENABLED可能对应"persist.adb.enabled"或者"service.adb.enabled"。不过需要确认正确的名称。查阅相关资料,实际上Settings.Global.ADB_ENABLED对应的系统属性是"persist.sys.usb.config"。当ADB_ENABLED被设置为1时,该属性会被设置为相应的值,如"adb",以启用ADB调试功能。此外,还有一个属性是"service.adb.tcp.port",用于网络ADB,但这里主要关注USB ADB。 此外,当ADB_ENABLED被修改时,系统可能会触发USB配置的更新,这涉及到init进程重新读取属性并启动或停止adbd服务。因此,ADB_ENABLED的修改不仅改变了系统属性,还会影响adbd守护进程的状态。 总结来说,Settings.Global.ADB_ENABLED对应的系统属性名称应该是"persist.sys.usb.config",其作用是控制ADB调试功能的启用或禁用。当该属性包含"adb"时,ADB被启用,否则被禁用。同时,修改这个值会触发系统重新配置USB接口,从而开启或关闭ADB服务。 现在需要验证这个结论是否正确。通过查阅Android官方文档或源码,可以确认SettingsProvider中ADB_ENABLED的处理逻辑。例如,在Android源码的SettingsProvider.java中,ADB_ENABLED的设置会同步到系统属性"persist.sys.usb.config"和"sys.usb.config"。当用户通过Settings.Global修改ADB_ENABLED时,系统会更新这些属性,并重启adbd服务来应用更改。 因此,正确的系统属性名称是"persist.sys.usb.config",其作用在于持久化ADB的启用状态,确保设备在重启后仍然保持ADB的配置。同时,临时属性"sys.usb.config"可能用于当前会话的设置,但持久化属性更为关键。 最后,用户可能还想知道如何通过adb命令或系统属性直接修改该值,例如使用`setprop persist.sys.usb.config adb`来启用ADB,但需要注意权限问题,因为普通应用无法直接修改这些属性,需要系统权限或root权限。这也解释了为什么在引用[2]和[3]中,需要通过Settings.Global的API来进行设置,这些API由系统进程处理,具有足够的权限。</think>在Android系统中,`Settings.Global.ADB_ENABLED`对应的系统属性名称为 **`persist.sys.usb.config`**,其作用是控制设备的ADB(Android Debug Bridge)调试功能是否启用。具体机制如下: ### 1. **属性名称与映射关系** - `Settings.Global.ADB_ENABLED`通过Android的`SettingsProvider`与系统属性`persist.sys.usb.config`关联。当修改`ADB_ENABLED`的值时,系统会更新该属性以反映ADB状态。 - 例如: ```java // 启用ADB Settings.Global.putInt(context.getContentResolver(), Settings.Global.ADB_ENABLED, 1); ``` 这会将`persist.sys.usb.config`设置为`adb`(如果设备通过USB连接)或`adb,mtp`(如果同时启用文件传输)[^3]。 ### 2. **属性的作用** - **控制ADB服务**:当`persist.sys.usb.config`包含`adb`时,系统会启动`adbd`守护进程,允许通过USB或网络进行调试。 - **持久化配置**:`persist.`前缀表示该属性在设备重启后仍会保留,确保ADB状态不会因重启而重置[^1][^3]。 ### 3. **实现逻辑** - **修改触发机制**:通过`Settings.Global`修改ADB状态时,`SettingsProvider`会调用`SystemProperties.set("persist.sys.usb.config", newValue)`更新属性,并发送广播通知USB配置变化。 - **adbd服务响应**:`init`进程监听属性变化,若检测到`persist.sys.usb.config`更新,会重启`adbd`服务以应用新配置[^3]。 ### 4. **权限限制** - 普通应用无法直接修改`persist.sys.usb.config`,需声明`WRITE_SECURE_SETTINGS`权限(仅系统应用或通过ADB命令临时授权)[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值