android系统设置的存储(包括wifi蓝牙开关、连接配置, 出厂默认配置)

文章详细分析了Android系统中Settings数据库的读写操作,包括全局设置的存储位置、WiFi和蓝牙开关的管理。同时,讨论了数据监听变化的原理,以及如何查看和修改如WiFi_on等设置。此外,提到了Android设备恢复出厂设置时的默认配置加载流程,特别是如何处理overlay机制导致的默认值覆盖问题,并给出了添加新默认配置的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Android系统 Settings数据库读写操作和数据监听变化原理分析

1、各个模块开关之类的存储

Android系统 Settings数据库读写操作和数据监听变化原理分析_android 监听数据库变化_不凡的洲的博客-优快云博客

存储的位置:/data/system/users/0/settings_global.xml

向WIFI_ON, 蓝牙开关都在这个文件里

frameworks/base/core/java/android/provider/Settings.java  (代码)

adb shell进去系统可以看到:settings get global wifi_on 结果为0

SettingsProvider.java里有定义:SETTINGS_FILE_GLOBAL = "settings_global.xml";

2、wifi连接的热点记录以及WIFI热点的设置记录

参考:Android11 热点配置信息保存分析-办公频道-52电子

android 11wifi信息保存位置:
/data/misc/apexdata/com.android.wifi/WifiConfigStore.xml热点信息保存位置:
/data/misc/apexdata/com.android.wifi/WifiConfigStoreSoftAp.xml

WifiConfigStoreSoftAp.xml文件在刚刷机并且没有开启热点的时候,这个文件可能不存在,当开启热点后,会创建,并且在更改完热点配置后,这个也会同步更改

二、android开发笔记之设置(settings)DB数据库  (默认值)

android开发笔记之设置(settings)DB数据库_android settings.db_hfreeman2008的博客-优快云博客

1、更改恢复出厂设置的默认值

有一种配置是刚刷机 或者 恢复出厂设置的时候,会恢复默认配置

下面这个是wifi_on、blutooth_on 这些配置的默认配置文件

frameworks/base/packages/SettingsProvider/res/values/defaults.xml 

<bool name="def_bluetooth_on">true</bool>
<bool name="def_wifi_on">true</bool>

<bool name="def_auto_time">false</bool>

碰到一个问题, 我可以把如果上面的auto_time的默认值更改,刷机后生效,但是上面的blutooth_on和wifi_on无论如何也不生效

经别人指导,知道有个叫overlay 机制的东西,就是会有其他的配置覆盖合并这个default.xml,

并找到位置在(8155平台):

packages/services/Car/car_product/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

2、加载默认配置的流程

packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

onCreate

        loadSettings   (Load inital settings values)

                       loadGlobalSettings (loadSystemSettings、loadSecureSettings)

                                loadBooleanSetting(stmt, Settings.Global.WIFI_ON,R.bool.def_wifi_on);

想打印所有的setting load,可以直接在loadSetting 函数里打印key和value

Log.i(TAG, "wqy loadSetting, key = " + key + " value = " + value);

3、添加新的默认配置项,比如data_on

源码位置:frameworks/base/core/java/android/provider/Settings.java

然后就可以获取这个数据库数据了

想在烧写和恢复出厂的时候,加载默认配置,需要在函数 loadGlobalSettings 里添加:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值