设置项开发概述
应用程序可以对系统各类设置项进行查询。例如,三方应用提前注册飞行模式设置项的回调,当用户通过系统设置修改终端的飞行模式状态时,三方应用会检测到此设置项发生变化并进行适配。如检测到飞行模式开启,将进入离线状态;检测到飞行模式关闭,其将重新获取在线数据。
基本概念
系统设置数据项分为TTS(Text To Speech)、Wireless、Network、Input、Sound、Display、Date、Call、General九类,应用程序可以根据自身拥有的权限对其进行操作。
设置项开发
场景介绍
TTS、Wireless、Network、Input、Sound、Display、Date、Call、General九类定义了表征终端设备状态的相关字段,如屏幕亮度、日期格式、字体显示大小等,应用程序可以对其进行查询,并进行相应的场景适配。
接口说明
SystemSettings提供系统设置的相关接口,包括TTS、Wireless、Network、Input、Sound、Display、Date、Call、General九类字段的存储和检索接口。应用程序通过AppSettings类提供的方法对其自身的能力进行查询。
表1 SystemSettings的主要接口
表2 SystemSettings.TTS提供的典型字段
表3 SystemSettings.Wireless提供的典型字段
表4 SystemSettings.Network提供的典型字段
表5 SystemSettings.Input提供的典型字段
表6 SystemSettings.Sound提供的字段
表7 SystemSettings.Display提供的典型字段
表8 SystemSettings.Date提供的典型字段
表9 SystemSettings.General提供的典型字段
表10 SystemSettings.Call提供的典型字段
开发步骤
应用程序打开某个Slice时,在OnStart()时,注册相关设置项的回调,并读取一次该设置项的值,进行初始化适配。
@Override public void onStart(Intent intent) { // ... dataAbilityHelper = DataAbilityHelper.creator(this); IDataAbilityObserver dataAbilityObserver = new IDataAbilityObserver() { @Override public void onChange() { String timeFormat = SystemSettings.getValue(dataAbilityHelper, SystemSettings.Date.TIME_FORMAT); setTimeFormat(timeFormat); } }; dataAbilityHelper.registerObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver); } void setTimeFormat(String timeFormat) { String timeStr = "12"; if (timeStr.equals(timeFormat)) { // Display in 12-hour format } else { // Display in 24-hour format } }
在onStop()时,解除回调注册。
dataAbilityHelper.unregisterObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);