欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

Android SettingProvider详解

发布时间:2025/4/16 Android 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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详解的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。