setting数据库主要使用 SettingsProvider+DatabaseHelper 实现,类似的实现还有 通讯录、通话记录

文件位于:

frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider.java

frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java

setting 数据库的名称为 settings.db ,里面包含三张表 分别为:system、secure、global

  1. Global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;

  2. System:包含各种各样的用户偏好系统设置,第三方APP有读没有写的权限;

  3. Secure:安全性的用户偏好系统设置,第三方APP有读没有写的权限。

  4. 其中settings_global.xml 、settings_secure.xml 、settings_system.xml 对应/frameworks/base/core/java/android/provider/Settings.java中的三个内部类:Global、Secure、System。

  5. settings_global.xml 、settings_secure.xml 、settings_system.xml 位于 /data/system/users/0/ 下

    这里需要再关注一个文件 frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider.java

    在这个文件中:定义了各数据库对应的xml文件

    private static final String SETTINGS_FILE_GLOBAL = "settings_global.xml";
    private static final String SETTINGS_FILE_SYSTEM = "settings_system.xml";
    private static final String SETTINGS_FILE_SECURE = "settings_secure.xml";
    private static final String SETTINGS_FILE_SSAID = "settings_ssaid.xml";
    private static final String SETTINGS_FILE_CONFIG = "settings_config.xml";
    final File globalSettingsFile = mSettingsRegistry.getSettingsFile(makeKey(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM));
    final File systemSettingsFile = mSettingsRegistry.getSettingsFile(makeKey(SETTINGS_TYPE_SYSTEM, UserHandle.USER_SYSTEM));
    final File secureSettingsFile = mSettingsRegistry.getSettingsFile(makeKey(SETTINGS_TYPE_SECURE, UserHandle.USER_SYSTEM));
    final File ssaidSettingsFile = mSettingsRegistry.getSettingsFile(makeKey(SETTINGS_TYPE_SSAID, UserHandle.USER_SYSTEM));
    final File configSettingsFile = mSettingsRegistry.getSettingsFile(makeKey(SETTINGS_TYPE_CONFIG, UserHandle.USER_SYSTEM));

    并在getSettingsFile方法中 读取对应的xml文件

      private File getSettingsFile(int key) {if (isConfigSettingsKey(key)) {final int userId = getUserIdFromKey(key);return new File(Environment.getUserSystemDirectory(userId),SETTINGS_FILE_CONFIG);} else if (isGlobalSettingsKey(key)) {final int userId = getUserIdFromKey(key);return new File(Environment.getUserSystemDirectory(userId),SETTINGS_FILE_GLOBAL);} else if (isSystemSettingsKey(key)) {final int userId = getUserIdFromKey(key);return new File(Environment.getUserSystemDirectory(userId),SETTINGS_FILE_SYSTEM);} else if (isSecureSettingsKey(key)) {final int userId = getUserIdFromKey(key);return new File(Environment.getUserSystemDirectory(userId),SETTINGS_FILE_SECURE);} else if (isSsaidSettingsKey(key)) {final int userId = getUserIdFromKey(key);return new File(Environment.getUserSystemDirectory(userId),SETTINGS_FILE_SSAID);} else {throw new IllegalArgumentException("Invalid settings key:" + key);}}
  6. SettingsProvider和SystemProperties有以下不同点: 1、数据保存方式不同:SystemProperties的数据保存属性文件中(/system/build.prop等),开机后会被加载到system properties store;SettingsProvider的数据保存在文件/data/system/users/0/settings_***.xml和数据库settings.db中; 2、作用范围不同:SystemProperties可以实现跨进程、跨层次调用,即底层的c/c++可以调用,java层也可以调用;SettingProvider只能能在java层(APP)使用; 3、公开程度不同:SettingProvider有部分功能上层第三方APP可以使用(对于加了@hide标记的第三方APP仅可读,不可修改),SystemProperties上层第三方APP不可以使用。

secure表中存有:

Settings.Secure.ADB_ENABLED,
Settings.Secure.ANDROID_ID,
Settings.Secure.BLUETOOTH_ON,
Settings.Secure.DATA_ROAMING,数据漫游(手机里设置的)
Settings.Secure.DEVICE_PROVISIONED,
Settings.Secure.HTTP_PROXY,
Settings.Secure.INSTALL_NON_MARKET_APPS,
Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
Settings.Secure.LOGGING_ID,
Settings.Secure.NETWORK_PREFERENCE,
Settings.Secure.PARENTAL_CONTROL_ENABLED,
Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE,
Settings.Secure.PARENTAL_CONTROL_REDIRECT_URL,
Settings.Secure.SETTINGS_CLASSNAME,
Settings.Secure.USB_MASS_STORAGE_ENABLED,
Settings.Secure.USE_GOOGLE_MAIL,
Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY,
Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT,
Settings.Secure.WIFI_ON,
Settings.Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE,
Settings.Secure.WIFI_WATCHDOG_AP_COUNT,
Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS,
Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED,
Settings.Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS,
Settings.Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT,
Settings.Secure.WIFI_WATCHDOG_MAX_AP_CHECKS,
Settings.Secure.WIFI_WATCHDOG_ON,
Settings.Secure.WIFI_WATCHDOG_PING_COUNT,
Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS,
Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS,
Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND
Settings.Secure.MOUNT_UMS_AUTOSTART
Settings.Secure.MOUNT_UMS_PROMPT
Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED
Settings.Secure.LOCK_PATTERN_ENABLED,
Settings.Secure.LOCK_PATTERN_VISIBLE,
Settings.Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED
Settings.Secure.LONG_PRESS_TIMEOUT
Settings.Secure.TOUCH_EXPLORATION_ENABLED
Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD
Settings.Secure.ACCESSIBILITY_ENABLED
Settings.Secure.TOUCH_EXPLORATION_ENABLED, 0)                 Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "");
Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, "");
Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
Settings.Secure.SCREENSAVER_ENABLED,
Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP,
Settings.Secure.SCREENSAVER_COMPONENTS,
Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT,
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
Settings.Secure.ADB_ENABLED,
Settings.Secure.BLUETOOTH_ON,
Settings.Secure.DATA_ROAMING,
Settings.Secure.DEVICE_PROVISIONED,
Settings.Secure.INSTALL_NON_MARKET_APPS,
Settings.Secure.USB_MASS_STORAGE_ENABLED
Settings.Secure.USER_SETUP_COMPLETE,
Settings.Secure.USER_SETUP_COMPLETE,
Settings.Secure.INSTALL_NON_MARKET_APPS
Settings.Secure.INSTALL_NON_MARKET_APPS,
Settings.Secure.WAKE_GESTURE_ENABLED,
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, -1);
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, oldShow);
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
Settings.Secure.SLEEP_TIMEOUT,
Settings.Secure.LOCK_TO_APP_EXIT_LOCKED
Settings.Secure.ALLOW_MOCK_LOCATION,
Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND,
Settings.Secure.MOUNT_UMS_AUTOSTART,
Settings.Secure.MOUNT_UMS_PROMPT,
Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED,
Settings.Secure.LONG_PRESS_TIMEOUT,
Settings.Secure.TOUCH_EXPLORATION_ENABLED,
Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD,
Settings.Secure.SCREENSAVER_ENABLED,
Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP,
Settings.Secure.SCREENSAVER_COMPONENTS,
Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT,
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
Settings.Secure.USER_SETUP_COMPLETE,
Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS,
Settings.Secure.INSTALL_NON_MARKET_APPS,
Settings.Secure.WAKE_GESTURE_ENABLED,
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
Settings.Secure.SLEEP_TIMEOUT,
Settings.Secure.BACKUP_ENABLED,
Settings.Secure.BACKUP_TRANSPORT,

global表

Settings.Global.ASSISTED_GPS_ENABLED
Settings.Global.SET_INSTALL_LOCATION,
Settings.Global.DEFAULT_INSTALL_LOCATION
Settings.Global.SET_INSTALL_LOCATION, 0);
Settings.Global.DEFAULT_INSTALL_LOCATION,
Settings.Global.PACKAGE_VERIFIER_TIMEOUT,
Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE
Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS,
Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS,
Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS
Settings.Global.BATTERY_DISCHARGE_DURATION_THRESHOLD,
Settings.Global.BATTERY_DISCHARGE_THRESHOLD,
Settings.Global.SEND_ACTION_APP_ERROR,
Settings.Global.DROPBOX_AGE_SECONDS,
Settings.Global.DROPBOX_MAX_FILES,
Settings.Global.DROPBOX_QUOTA_KB,
Settings.Global.DROPBOX_QUOTA_PERCENT,
Settings.Global.DROPBOX_RESERVE_PERCENT,
Settings.Global.DROPBOX_TAG_PREFIX,
Settings.Global.ERROR_LOGCAT_PREFIX,
Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL,
Settings.Global.DISK_FREE_CHANGE_REPORTING_THRESHOLD,
Settings.Global.SYS_STORAGE_THRESHOLD_PERCENTAGE,
Settings.Global.SYS_STORAGE_THRESHOLD_MAX_BYTES,
Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES,
Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS,
Settings.Global.CONNECTIVITY_CHANGE_DELAY,
Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED,
Settings.Global.CAPTIVE_PORTAL_SERVER,
Settings.Global.NSD_ON,
Settings.Global.SET_INSTALL_LOCATION,
Settings.Global.DEFAULT_INSTALL_LOCATION,
Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY,
Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY,
Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT,
Settings.Global.HTTP_PROXY,
Settings.Global.GLOBAL_HTTP_PROXY_HOST,
Settings.Global.GLOBAL_HTTP_PROXY_PORT,
Settings.Global.GLOBAL_HTTP_PROXY_EXCLUSION_LIST,
Settings.Global.SET_GLOBAL_HTTP_PROXY,
Settings.Global.DEFAULT_DNS_SERVER,
Settings.Global.BLUETOOTH_HEADSET_PRIORITY_PREFIX,
Settings.Global.BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX,
Settings.Global.BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX,
Settings.Global.WINDOW_ANIMATION_SCALE,
Settings.Global.TRANSITION_ANIMATION_SCALE,
Settings.Global.ANIMATOR_DURATION_SCALE,
Settings.Global.FANCY_IME_ANIMATIONS,
Settings.Global.COMPATIBILITY_MODE,
Settings.Global.EMERGENCY_TONE,
Settings.Global.CALL_AUTO_RETRY,
Settings.Global.DEBUG_APP,
Settings.Global.WAIT_FOR_DEBUGGER,
Settings.Global.ALWAYS_FINISH_ACTIVITIES,
Settings.Global.PREFERRED_NETWORK_MODE,
Settings.Global.CDMA_SUBSCRIPTION_MODE,
Settings.Global.MODE_RINGER
Settings.Global.DEVICE_PROVISIONED
Settings.Global.BUGREPORT_IN_POWER_MENU
Settings.Global.LOW_BATTERY_SOUND_TIMEOUT,
Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED,
Settings.Global.DEVICE_NAME
Settings.Global.TRUSTED_SOUND,
Settings.Global.MODE_RINGER
Settings.Global.DEVICE_NAME
Settings.Global.THEATER_MODE_ON,
Settings.Global.AIRPLANE_MODE_ON,
Settings.Global.THEATER_MODE_ON,
Settings.Global.AIRPLANE_MODE_RADIOS,
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
Settings.Global.ASSISTED_GPS_ENABLED,
Settings.Global.AUTO_TIME,
Settings.Global.AUTO_TIME_ZONE,
Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
Settings.Global.WIFI_SLEEP_POLICY,
Settings.Global.MODE_RINGER,
Settings.Global.WIFI_ON,
Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
Settings.Global.BLUETOOTH_ON,
Settings.Global.CDMA_CELL_BROADCAST_SMS,
Settings.Global.DATA_ROAMING,
Settings.Global.DEVICE_PROVISIONED,
Settings.Global.DOWNLOAD_MAX_BYTES_OVER_MOBILE,
Settings.Global.DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE,
Settings.Global.MOBILE_DATA,
Settings.Global.NETSTATS_ENABLED,
Settings.Global.USB_MASS_STORAGE_ENABLED,
Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT,
Settings.Global.WIFI_DISPLAY_ON,
Settings.Global.LOCK_SOUND,
Settings.Global.UNLOCK_SOUND,
Settings.Global.TRUSTED_SOUND,
Settings.Global.POWER_SOUNDS_ENABLED,
Settings.Global.LOW_BATTERY_SOUND,
Settings.Global.DOCK_SOUNDS_ENABLED,
Settings.Global.DOCK_SOUNDS_ENABLED_WHEN_ACCESSIBILITY,
Settings.Global.DESK_DOCK_SOUND,
Settings.Global.DESK_UNDOCK_SOUND,
Settings.Global.CAR_DOCK_SOUND,
Settings.Global.CAR_UNDOCK_SOUND,
Settings.Global.DOCK_AUDIO_MEDIA_ENABLED,
Settings.Global.SET_INSTALL_LOCATION, 0);
Settings.Global.DEFAULT_INSTALL_LOCATION,
Settings.Global.EMERGENCY_TONE, 0);
Settings.Global.CALL_AUTO_RETRY, 0);
Settings.Global.PREFERRED_NETWORK_MODE, val.toString());
Settings.Global.CDMA_SUBSCRIPTION_MODE, type);
Settings.Global.LOW_BATTERY_SOUND_TIMEOUT,
Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE,
Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED,
Settings.Global.DEVICE_NAME, getDefaultDeviceName());
Settings.Global.LID_BEHAVIOR, defaultLidBehavior);

system表

Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '"
Settings.System.WINDOW_ANIMATION_SCALE + "'");
Settings.System.TRANSITION_ANIMATION_SCALE + "'");
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '"
Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
Settings.System.WINDOW_ANIMATION_SCALE + "'");
Settings.System.TRANSITION_ANIMATION_SCALE + "'");
Settings.System.HAPTIC_FEEDBACK_ENABLED + "'");
Settings.System.NOTIFICATION_LIGHT_PULSE,
Settings.System.VOLUME_BLUETOOTH_SCO,
Settings.System.VIBRATE_IN_SILENT,
Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'");
Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
Settings.System.AUTO_TIME, 0);
Settings.System.AUTO_TIME_ZONE,
Settings.System.USER_ROTATION,
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '"
Settings.System.WINDOW_ANIMATION_SCALE + "'");
Settings.System.TRANSITION_ANIMATION_SCALE + "'");
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "'");
Settings.System.MODE_RINGER_STREAMS_AFFECTED + "', '"
Settings.System.NOTIFICATIONS_USE_RING_VOLUME + "'");Settings.System.AIRPLANE_MODE_RADIOS + "'");
Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS + "'");
Settings.System.VIBRATE_IN_SILENT,
Settings.System.LOCKSCREEN_DISABLED,
Settings.System.VIBRATE_IN_SILENT + "'");
Settings.System.STAY_ON_WHILE_PLUGGED_IN };
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SIP_ADDRESS_ONLY);
Settings.System.SIP_CALL_OPTIONS);
Settings.System.SIP_ASK_ME_EACH_TIME);
Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, 0);
Settings.System.SCREEN_OFF_TIMEOUT, "-1" },
Settings.System.SCREEN_OFF_TIMEOUT,
Settings.System.VIBRATE_ON, 0);
Settings.System.VIBRATE_ON, vibrateSetting);
Settings.System.SCREEN_OFF_TIMEOUT,
Settings.System.SCREEN_BRIGHTNESS_MODE + "','" + value + "');");
Settings.System.VOLUME_MUSIC,
Settings.System.VOLUME_RING,
Settings.System.VOLUME_SYSTEM,
Settings.System.VOLUME_VOICE,
Settings.System.VOLUME_ALARM,
Settings.System.VOLUME_NOTIFICATION,
Settings.System.VOLUME_BLUETOOTH_SCO,
Settings.System.MODE_RINGER_STREAMS_AFFECTED,
Settings.System.MUTE_STREAMS_AFFECTED,
Settings.System.VIBRATE_ON + "'");
Settings.System.VIBRATE_ON, vibrate);
Settings.System.DIM_SCREEN,
Settings.System.SCREEN_OFF_TIMEOUT,
Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);
Settings.System.HEARING_AID, 0);
Settings.System.TTY_MODE, 0);
Settings.System.SCREEN_BRIGHTNESS_FOR_VR,
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.ACCELEROMETER_ROTATION,
Settings.System.NOTIFICATION_LIGHT_PULSE,
Settings.System.POINTER_SPEED,
Settings.System.DTMF_TONE_WHEN_DIALING,
Settings.System.SOUND_EFFECTS_ENABLED,
Settings.System.HAPTIC_FEEDBACK_ENABLED,
Settings.System.LOCKSCREEN_SOUNDS_ENABLED,
Settings.System.WINDOW_ANIMATION_SCALE,
Settings.System.TRANSITION_ANIMATION_SCALE,
Settings.System.HAPTIC_FEEDBACK_ENABLED,
Settings.System.LOCKSCREEN_DISABLED
Settings.System.LOCKSCREEN_DISABLED,

默认值的加载 :

def_sleep_timeout 定义在 frameworks/base/packages/SettingsProvider/res/values/defaults.xml下

<integer name="def_sleep_timeout">-1</integer>

overlay文件位于device/google/atv/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<integer name="def_sleep_timeout">86400000</integer>
loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,R.integer.def_sleep_timeout);
​
private void loadIntegerSetting(SQLiteStatement stmt, String key, int resid) {loadSetting(stmt, key,Integer.toString(mContext.getResources().getInteger(resid)));
}

设置命令 :setting get/put 表名 字段名 (值)

settings list secure |grep sleep_timeout
settings get secure sleep_timeout    进入 待机
settings put secure sleep_timeout
​
settings get system screen_off_timeout  进入屏保
settings put system screen_off_timeout
​
settings list global/system/secure   查询某个表里的所有属性

代码里设置

Settings.Global.putString(mContext.getContentResolver(), "audio_test_result", value);//修改
Settings.Global.getString(mContext.getContentResolver(), "audio_test_result");//查询

Setting 增加新字段的方法

1.在 frameworks\base\core\java\android\provider\Settings.java 中定义新字段

public static final String DIGITAL_AUDIO_FORMAT = "digital_audio_format";

2.在 frameworks\base\packages\SettingsProvider\res\values\defaults.xml中定义默认值

<integer name="def_digital_audio_format">0</integer>

3.在 frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java

中加载默认值

loadIntegerSetting(stmt, Settings.Global.DIGITAL_AUDIO_FORMAT,R.integer.def_digital_audio_format);

4.使用命令 make api-stubs-docs-update-current-api 更新frameworks/base/api/current.txt文档

5.使用make 命令再次编译镜像即可

三、Settings中值的监听

有时需要监听Settings下面的值,这个时候可以通过ContentObserver 来监听值的变化。

1.首先自定义一个类继承ContentObserver,在onChange()方法里处理相应逻辑

public class SettingListener extends ContentObserver {/*** Creates a content observer.** @param handler The handler to run {@link #onChange} on, or null if none.*/public SettingListener(Handler handler) {super(handler);}
​@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange);}
​@Overridepublic void onChange(boolean selfChange, Uri uri) {super.onChange(selfChange, uri);String string = Settings.Global.getString(HwContext.getContext().getContentResolver(),Settings.Global.ADB_ENABLED);//处理变化后的逻辑}
}

2.注册监听。

mHandler = new Handler(true /*async*/);
mSettingListener = new SettingListener(mHandler);
mContext.getContentResolver().registerContentObserver(Settings.Global.getUriFor(Settings.Global.AUDIO_TEST_RESULT), false, mSettingListener, UserHandle.USER_ALL);

3.结束时候取消监听。

getContentResolver().unregisterContentObserver(mSettingListener);

Android settings相关推荐

  1. Android Settings开发之修改

    版本:1.0 日期:2014.3.20  2014.3.25   版权:© 2014 kince 转载注明出处                下面是Seeings应用的截图:   可以看出这是很典型的 ...

  2. Android开发:关于Android Settings中的八个问题

    本问将回答以下八个问题,如有错误,敬请批评指正,不胜感激!(注:本文中的Settings解析基于android4.0+) 问题一.Settings的主界面是怎么实现的? 问题二.为什么使用hierar ...

  3. android settings源代码分析(3)

    本章主要分析google settings里面存储模块的代码. 存储模块所在的fragment为: [html] view plaincopy <!-- Storage --> <h ...

  4. android settings源代码分析(2)

    通过前一篇文章  Android settings源代码分析(1)  分析,大概知道了Settings主页面是如何显示,今天主要分析"应用"这一块google是如何实现的. 应用对 ...

  5. android settings源代码分析(1)

    1.Android settings源码的source code路径为: kikat_4.4_CTS\packages\apps\Settings 2.settings主界面UI布局 Settings ...

  6. android settings 源码,菜鸟学Android源码-Settings(2)

    最近一直忙着项目上的活计,没啥心思关注博客,前两天屌丝逆袭, 看了一场你的名字,深深感叹叔叔辈的无奈啊, 青葱憧憬爱情的年华,垂老怀旧相依的岁月, 而我老未及老,幼以过幼, 哎,白瞎了一张电影票. 上 ...

  7. Android Settings 应用二 获取应用消耗的流量

    了解这一块也是因为有需求要获取指定应用所消耗的流量.在Android中,流量消耗主要分为手机卡和WIFI,在Settings中,也有统计流量的使用情况.经了解,Settings中是通过Loader去加 ...

  8. Android Settings 中wifi详情页 隐私默认选中设备mac

    1.概述 在10.0的系统产品开发中,在对ota升级中,由于要固定使用本机mac地址,所以不能让选择默认mac地址,这时就要修改默认设置,保证升级能够成功 2.Settings 中wifi详情页 隐私 ...

  9. Android Settings模块

    Settings SettingsIntelligence XML:Preference.PreferenceScreen.PreferenceCategory Fragment:DashboardF ...

  10. qt 关联android,从QT app(com.android.settings)打开android设置

    QAndroidJniObject可以从Qt C代码创建JNI对象. 例如:获取活动: QAndroidJniObject activity = QAndroidJniObject::callStat ...

最新文章

  1. 遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了
  2. 怎么tp玩家_DNF:被误制裁玩家痛苦下跪,求TP为其复查:我只是在家搬个砖!...
  3. 颜宁问4对科研夫妻:男科学家怎样平衡事业家庭?
  4. php调用接口搜索的网页源代码,PHP用户管理中常用接口调用实例及解析(含源码)...
  5. thrift java长连接_利用thrift在c++、java和python之间相互调用
  6. 新浪微博回应热搜被暂停更新一周;即刻 APP 下架一年后恢复上线;Android 11 Beta 版发布| 极客头条...
  7. ORACLE修改表信息
  8. 设备驱动基础学习--/proc下增加节点
  9. Google深度学习TensorFlow最好的入门文章!
  10. Repeater的ItemCommand事件和ItemCreated事件,高手请跳过~
  11. xcode11 The app delegate must implement the window property if it wants to use a main storyboard fil
  12. 使用woboq_codebrowser工具以html形式浏览项目源码
  13. 基于安卓的备忘录文件加密_苹果备忘录、锤子便签、印象笔记哪个更好用?
  14. 发明专利申请流程具体步骤。
  15. AI 图片截取、ffmpeg使用及安装, anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题
  16. 大白天「撞鬼」?特斯拉在无人墓地感应到行人,传感器真能测鬼?
  17. 我做了一个100+工具的外贸营销推广工具导航,你觉得怎么样?
  18. 计算机组成原理之运算方法和运算器
  19. [ Bootstrap ] 可视化布局
  20. L6网络编程--IO多路复用(day6)

热门文章

  1. 云计算 : 公有云、私有云、混合云到底是个啥玩意?
  2. Mac搜不到wifi
  3. js渲染10万数据列表,不阻塞UI
  4. 【深度科普】辐射的真相
  5. 迷宫寻宝(一) 搜索
  6. JAVA学习05-类型转换
  7. 摹客导入html,导入摹客RP
  8. 计算机科学数学科目,计算机科学与技术考研考哪些科目 备考技巧有哪些
  9. CCAnimation创建动画cocos2d-x教程
  10. 联想台式计算机g50500i,联想台式电脑的价格及配置