• 一 概述
  • 二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

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 ringtonecontent://media/internal/audio/media/59$ adb shell settings set system ringtone "content://media/internal/audio/media/60"Invalid command: setusage:  settings [--user NUM] get namespace key        settings [--user NUM] put namespace key value        settings [--user NUM] delete namespace key'namespace' is one of {system, secure, global}, case-insensitiveIf '--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 ringtonecontent://media/internal/audio/media/60

三、Android L 的SettingsProvider

在Android L版本中,Google团队为了优化系统性能、提高安全性等等一些列需求,重构了SettingsProvider模块,在L版本中,不在使用数据库来存储系统设置,而是通过xml将系统设置存储在了/data/system/user/ 目录下

有关L版本中SettingsProvider的修改更新方法同之前的相同

更多相关文章

  1. Gradle sync failed: Cause: error in opening zip file 几个可
  2. Android(安卓)ImageView的ScaleType属性
  3. Android学习笔记——各种常用布局管理器的使用
  4. 在代码中获取Android(安卓)theme中的attr属性值
  5. RubyMotion 3发布,支持Android和WatchKit
  6. Android开发环境搭建及常见问题解决方法
  7. Android线性布局重要属性
  8. 【layout_weight权重】Android(安卓)对Layout_weight属性完全解
  9. Android大图轮播-学习笔记

随机推荐

  1. 转贴 Android 开发之旅:又见Hello World!
  2. android GPS开发实践
  3. Android 滑动侧边栏(Sliding Menu)第一种实
  4. android的四层体系结构,基于mvc三层结构浅
  5. Android图片转换
  6. Android实现用代码简单安装和卸载APK的方
  7. Android 事件冒泡及捕获
  8. android:imeOptions指定了弹出键盘时右下
  9. Android设置一个按钮右对齐
  10. Android应用商店——Splash页面的实现,And