美文网首页Android进化
Android frameworks中的Settings.jav

Android frameworks中的Settings.jav

作者: 锄禾豆 | 来源:发表于2018-12-07 20:28 被阅读0次

    关键内容简介

    一、Settings

    frameworks/base/core/java/android/provider/Settings.java

    Settings.System.*

    Settings.Secure.*

    Settings.Global.*

    例如,我们常用的Settings KEY,如下:

    飞行模式:

    Settings.Global.AIRPLANE_MODE_ON

    定位:

    Settings.SECURE.LOCATION_MODE

    二、SettingsProvider

    frameworks\base\packages\SettingsProvider

    怎么快速验证?

    一、通过adb快速验证

    设置值:

    adb shell settings put global airplane_mode_on 1

    adb shell settings put secure location_mode  3

    获取值:

    adb shell settings get global airplane_mode_on

    adb shell settings get secure location_mode

    效果如下:

    二、通过/data/system/users/0获取数据

    注:

    怎么通过代码来读取data/system/users/0中的文件?

    其实,/data/system/users/0中的settings_global.xml、settings_secure.xml、settings_secure.xml文件,是由SettingsProvider创建,所以,要读这些文件,需要看SettingsProvider的权限有什么。例如,8.x 系统如下:

    所以,我们的apk只要满足:

    a.android:sharedUserId="android.uid.system"

    b.系统签名

    补充:

    说明它是system用户,那么只要我们让我们的apk也属于system用户即可

    三、一和二两者有什么关联?

    adb shell settings中的global secure system和/data/system/users/0目录的对应关系

    global<------->settings_global.xml

    secure<------->settings_secure.xml

    system<------->ssettings_secure.xml

    Settings.java与SettingsProvider怎么关联?

    1.Settings.java-->ContentResolver-->ContentProvider-->SettingsProvider

    2.ContentResolver  ------Uri-----SettingsProvider

    说明:

    1).ContentResolver好比内容分解器,能够分解具体是哪个内容提供者

    2).ContentResolver的依据就是Uri

    3).解析Uri:

    content://user_dictionary

    对比理解:

    https://www.baidu.com

    https表示的是网络技术中的传输协议

    www.baidu.com是百度的域名

    content://user_dictionary

    content当做连接ContentProvider中的一种协议

    user_dictionary可以比作具体ContentProvider的域名

    例如:content://settings/system

    settings找到SettingsProvider

    system对应SettingsProvider中的system路径

    代码跟踪关联关系

    参考文章

    https://blog.csdn.net/c10wtiybq1ye3/article/details/79237671

    https://blog.csdn.net/myfriend0/article/details/58587065

    https://blog.csdn.net/myfriend0/article/details/59107989/

    相关文章

      网友评论

        本文标题:Android frameworks中的Settings.jav

        本文链接:https://www.haomeiwen.com/subject/ysmxhqtx.html