Android SettingProvider详解
来源:互联网 发布:财新主持人袁小珊 知乎 编辑:程序博客网 时间:2024/06/03 14:31
- 一 概述
- 二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的修改更新方法同之前的相同
- Android SettingProvider详解
- Android SettingProvider详解
- Android 7.0后SettingProvider ContactsProvider TelephonyProvider MediaProvider数据库位置
- Android 7.0后SettingProvider ContactsProvider TelephonyProvider MediaProvider数据库位置
- Android 7.0后SettingProvider ContactsProvider TelephonyProvider MediaProvider数据库位置
- SettingProvider exmaple
- android android:taskAffinity 详解
- [Android]Android.mk 详解
- 【Android】Android LogCat使用详解
- android中android:wight详解
- Android之android:layout_weight详解
- 【android】android Handler应用详解
- android android:layout_weight 属性详解
- Android之android:layout_weight详解
- 【Android】Android LogCat使用详解
- 【Android】Android开发规范详解
- android之android:layout_weight详解
- Android之android:layout_weight详解
- div里面加上ul li 后,这个div与它上面的那个div之间就会出现一小段空白
- Eclipse配置Tomcat
- java(优化七) 15天玩转redis之第一篇
- 使用android-async-http来封装Android网络请求框架
- 左移右移运算符的探究
- Android SettingProvider详解
- HDU 3746 kmp循环节
- cocoapods一直卡在 Updating local specs repositories
- VS 编译PCL后 install报错
- ContextMenu的简单使用
- nomn监控指标介绍
- js通用对象数组冒牌排序
- android APP 中微信分享功能实现 的总结
- 内存的管理方式有哪些