Android SettingProvider详解
点击打开链接
- 一 概述
- 二Android M之前的SettingsProvider
- 1 系统设置初始化
- 2 系统设置的修改
- 三Android L 的SettingsProvider
一、 概述
在Android启动之后,我们通常需要根据自己的一些需要来设置一些符合我们使用习惯的属性。例如:来电铃声、锁屏时间、日期格式等等。而这些属性的设置通常是有Settings为入口,通过SettingsProvider来进行的。SettingsProvider也是所有系统设置的管理者。在M(Android5.0)版本之前,SettingsProvider中系统设置是存储在settings.db数据库中;但是在L(Android6.0)之后,SettingsProvider中系统设置改为由xml存储在data分区。
二、Android M之前的SettingsProvider
进入/data/data/com.android.providers.settings/databases
# cd /data/data/com.android.providers.settings/databases
# sqlite3 settings.db
- 1
- 2
- 1
- 2
sqlite3 有可能提示找不到,这是由于在当前版本中sqlite3程序没有被编译到system中,这里我们只需要手动push一个sqlite3就好了。
在使用sqlite3打开settings.db数据库之后,可以使用.help
来查看有关sqlite3的一些帮助信息。这里常用的如下所示:
2.1 系统设置初始化
这些属性是如何被写入到SettingsProvider中的呢?
请参照如下代码。
frameworks/base/packages/SettingsProvider/src/com/Android/providers/settings/DatabaseHelper.Java
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
2.2 系统设置的修改
系统属性的设置,我们可以通过修改源码,编译生成SettingsProvider.apk并安装到系统中,就能生效。
这里在提供一种更简便的方法
adb shell settings,有关其详细用法,可以参照如下提示:
$ adb shell settings get system ringtone
content://media/internal/audio/media/59
$ adb shell settings set system ringtone "content://media/internal/audio/media/60"
Invalid command: set
usage: settings [--user NUM] get namespace keysettings [--user NUM] put namespace key valuesettings [--user NUM] delete namespace key
'namespace' is one of {system, secure, global}, case-insensitive
If '--user NUM' is not given, the operations are performed on the owner user.
$ adb shell settings put system ringtone "content://media/internal/audio/media/60"
$ adb shell settings get system ringtone
content://media/internal/audio/media/60
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
三、Android L 的SettingsProvider
在Android L版本中,Google团队为了优化系统性能、提高安全性等等一些列需求,重构了SettingsProvider模块,在L版本中,不在使用数据库来存储系统设置,而是通过xml将系统设置存储在了/data/system/user/ 目录下
有关L版本中SettingsProvider的修改更新方法同之前的相同
Android SettingProvider详解相关推荐
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android菜单详解——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- Android LayoutInflater详解
Android LayoutInflater详解 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类 似于findViewById().不同点是LayoutInflater是用来 ...
- android Fragments详解
android Fragments详解一:概述 android Fragments详解二:创建Fragment 转载于:https://my.oschina.net/liangzhenghui/blo ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
- android WebView详解,常见漏洞详解和安全源码(上)
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...
- android子视图无菜单,Android 菜单详解
Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...
- Android StateFlow详解
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121913352 本文出自[赵彦军的博客] 文章目录 系列文章 一.冷流还是热流 S ...
- Android SharedFlow详解
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121911675 本文出自[赵彦军的博客] 文章目录 系列文章 什么是SharedF ...
最新文章
- dll可以在linux下使用吗_无需虚拟技术,6步直接在Windows下使用Linux
- android libc 有哪些函数_35K成功入职:腾讯视频面试Android经历!「含面试题+答案」...
- 账号管理工具_全新微信个人号管理工具能选择吗?为何这么说?
- JVM内存模型、逃逸分析以及发生GC的时机
- 在VMware安装Ubuntu后一直停留在VMware Easy Install
- 汇川500et变频器源码,说明书,解析文档等
- android 教程 百度云盘,【从零教程】带你从零编写自己的在线百度云盘 11-21更新...
- 【python】断言的用法
- 微积分-指数函数求导
- 假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。...
- Excel的N函数和VALUE函数的使用和区别
- 【子网,超网和掩码】
- 数据分析——AARRR模型
- java中控制反转_Java如何利用IOC控制反转的三种设计模式详解
- win10台式计算机调亮度,Win10系统台式机怎么调节亮度
- 前端做大屏显示,缩放比,分辨率怎样适配?
- BLE传输速率以及抓包工具
- 使用vi编辑器创建文本文件
- 块存储、文件存储和对象存储三者的区别
- 灵遁者:写作没有固定的模型,也不会有固定的路
热门文章
- layui时间怎么设置年月日时分秒_安卓手机便签敬业签到时间提醒后怎么设置延时30分钟再提醒?...
- html中双重id标签怎么写,PHP读取HTML并处理双重ID外观
- Java中print、printf、println的区别 详解
- Visual Studio 2017软件安装教程
- Day2-springmvc初解
- python装饰器_Python装饰器是个什么鬼?
- Zabbix的web界面基本操作
- Redis:哨兵模式(Sentinel)原理
- 局域网中架设Win 2003终端服务器
- Android 实现 调用 WPS Office手机版接口