系统设置¶
您可以使用 FIRERPA 的 Settings 相关接口,来进行一些安卓系统的参数设置,或者系统设置的读取。这个功能能做到的具体项目很多, 比如通过此功能设置屏幕亮度、开关开发者模式,甚至铃声音量等。我们这里只做一些简单的示例。
调用接口¶
在开始之前,您需要先获取一个 Settings 实例,您可以像下面这样调用。
settings = d.stub("Settings")
将系统屏幕的亮度设置为手动模式,这样您设备的屏幕亮度就不会跟随环境光的改变而改变,您才可以为屏幕设置一个固定的亮度。
settings.put_system("screen_brightness_mode", "0")
获取当前屏幕的亮度,随后将屏幕的亮度降低为 5。
settings.get_system("screen_brightness")
settings.put_system("screen_brightness", "5")
获知是否开启了开发者模式,随后关闭开发者模式。
settings.get_global("development_settings_enabled")
settings.put_global("development_settings_enabled", "0")
获知是否开启了屏保,随后关闭屏保。
settings.get_secure("screensaver_enabled")
settings.put_secure("screensaver_enabled", "0")
以下示例将会设置屏幕亮度为手动,亮度为 64,并且永不息屏。
settings.put_system("screen_brightness", "64")
settings.put_system("screen_brightness_mode", "1")
settings.put_system("screen_off_timeout", "604800000")
可用参数¶
如果您对 screen_brightness 等字符串表示疑惑,本节就是为您准备的。此接口的可用参数完全取决于系统支持哪些。请注意,有些常量在不同版本的安卓上可能不兼容,而且部分厂商会有自定义的变量。您可以在以下安卓官方文档中找到相关可用参数,然后配合以上接口进行系统设置。
小技巧
我们在下面列出官方定义的可用字段,但是实际系统中的可用字段远不止这些,您可以使用命令 settings list [system|global|secure] 来查看不同分类里面实际都有哪些可用设置。
官方文档¶
| 分类 | 链接 |
|---|---|
| 全局系统设置(Global Settings),包含所有用户均可访问的系统级偏好设置 | https://developer.android.com/reference/android/provider/Settings.Global |
| 系统设置(System Settings),包含历史遗留的系统偏好设置,主要用于铃声、亮度等设备相关配置 | https://developer.android.com/reference/android/provider/Settings.System |
| 安全设置(Secure Settings),包含与隐私和安全相关的系统设置 | https://developer.android.com/reference/android/provider/Settings.Secure |
Global¶
| 字段名(小写) | 类型 | 描述 | 加入版本 | 移除版本 |
|---|---|---|---|---|
| adb_enabled | int | 是否启用通过 USB 连接的 ADB(Android 调试桥)。 | 17 | |
| airplane_mode_on | int | 是否开启飞行模式。 | 17 | |
| airplane_mode_radios | string | 飞行模式开启时需要禁用的无线电列表,以逗号分隔。 | 17 | |
| always_finish_activities | int | 若不为 0,活动管理器会在不再需要时立即结束活动和进程;为 0 则使用正常的延长生命周期。 | 17 | |
| animator_duration_scale | float | 基于 Animator 的动画的缩放因子。 | 17 | |
| apply_ramping_ringer | int | 是否在来电铃声上应用渐强响铃。 | 29 | 33 |
| auto_time | int | 是否自动设置设备 UTC 系统时钟(例如使用 NITZ 等蜂窝信号或其他来源)。 | 17 | |
| auto_time_zone | int | 是否自动设置设备时区系统属性(例如使用 MCC、NITZ 等蜂窝信号或位置等其他机制)。 | 17 | |
| bluetooth_on | int | 蓝牙是否启用(0=禁用,1=启用)。 | 17 | |
| boot_count | int | 自设备启动 API 级别 24 以来的启动次数。 | 24 | |
| contact_metadata_sync_enabled | int | 是否启用联系人元数据同步(1=启用,0=禁用)。 | 24 | |
| data_roaming | int | 是否启用数据漫游(0=否,1=是)。 | 17 | |
| debug_app | string | 要调试的应用包名。 | 17 | |
| development_settings_enabled | int | 用户是否启用了开发者选项(0=否,1=是)。 | 17 | |
| device_name | string | 设备名称。 | 25 | |
| device_provisioned | int | 设备是否已完成配置(0=否,1=是)。 | 17 | |
| http_proxy | string | 全局 HTTP 代理的主机名和端口(使用冒号分隔)。 | 17 | |
| install_non_market_apps | int | 是否允许安装非市场应用。 | 17 | 21 |
| mode_ringer | int | 响铃模式(内部使用,更改此值不会改变实际响铃模式,请参见 AudioManager)。 | 17 | |
| network_preference | int | 用户对应使用哪个网络的偏好(仅限连接服务修改)。 | 17 | |
| radio_bluetooth | string | 用于飞行模式或卫星模式无线电列表中指定蓝牙无线电的常量。 | 17 | |
| radio_cell | string | 用于飞行模式无线电列表中指定蜂窝无线电的常量。 | 17 | |
| radio_nfc | string | 用于飞行模式或卫星模式无线电列表中指定 NFC 无线电的常量。 | 17 | |
| radio_wifi | string | 用于飞行模式或卫星模式无线电列表中指定 Wi‑Fi 无线电的常量。 | 17 | |
| secure_frp_mode | int | 指示设备是否处于受限的安全 FRP(恢复出厂设置保护)模式下。 | 34 | |
| show_processes | int | 控制是否显示进程 CPU 使用率计量器。 | 17 | 25 |
| stay_on_while_plugged_in | int | 设备插入电源时是否保持唤醒状态(可组合值:AC、USB、无线、底座充电器)。 | 17 | |
| transition_animation_scale | float | 活动过渡动画的缩放因子。 | 17 | |
| usb_mass_storage_enabled | int | USB 大容量存储是否启用。 | 17 | |
| use_google_mail | int | 若此设置被设置(任意值),则设备上所有对 Gmail 的引用都必须改为 Google Mail。 | 17 | |
| wait_for_debugger | int | 若为 1,启动 DEBUG_APP 时会等待调试器连接后再执行用户代码;为 0 则正常启动。 | 17 | |
| wifi_device_owner_configs_lockdown | int | 控制由设备所有者应用创建的 Wi‑Fi 配置是否应被锁定(仅设备所有者应用可编辑或删除)。 | 23 | |
| wifi_max_dhcp_retry_count | int | 在获取 DHCP IP 地址失败后,重试连接接入点的最大次数(N 表示总共尝试 N+1 次)。 | 17 | |
| wifi_mobile_data_transition_wakelock_timeout_ms | int | 从 Wi‑Fi 断开后,等待移动数据连接建立时持有唤醒锁的最大毫秒数。 | 17 | |
| wifi_networks_available_notification_on | int | 是否在有可用开放网络时通知用户。 | 17 | 26 |
| wifi_networks_available_repeat_delay | int | 重复显示 Wi‑Fi 可用网络通知的延迟时间(秒)。 | 17 | 30 |
| wifi_num_open_networks_kept | int | 当开放网络数量超过此值时,将移除最近最少使用的多余网络。 | 17 | 30 |
| wifi_on | int | Wi‑Fi 是否应开启(仅限 Wi‑Fi 服务修改)。 | 17 | |
| wifi_sleep_policy | int | 决定 Wi‑Fi 何时进入休眠的策略。 | 17 | 30 |
| wifi_sleep_policy_default | int | 使用默认 Wi‑Fi 休眠策略的值(根据 STAY_ON_WHILE_PLUGGED_IN 设置)。 | 17 | 30 |
| wifi_sleep_policy_never | int | 从不进入休眠的值。 | 17 | 30 |
| wifi_sleep_policy_never_while_plugged | int | 在电池供电时使用默认策略,插入电源时从不休眠的值。 | 17 | 30 |
| wifi_watchdog_on | int | Wi‑Fi 看门狗是否启用。 | 17 | |
| window_animation_scale | float | 普通窗口动画的缩放因子。 | 17 |
System¶
| 字段名(小写) | 类型 | 描述 | 加入版本 | 移除版本 |
|---|---|---|---|---|
| accelerometer_rotation | int | 控制是否使用加速度计自动旋转屏幕(0=禁用,1=启用) | 3 | |
| alarm_alert | string | 系统默认闹钟提示音的 URI | 5 | |
| bluetooth_discoverability | int | 蓝牙可发现性设置(2=可发现且可连接,1=可连接不可发现,0=两者都不可) | 1 | |
| bluetooth_discoverability_timeout | int | 蓝牙可发现状态的超时时间(秒) | 1 | |
| date_format | string | 日期格式(已弃用,不再使用) | 1 | 31 |
| dtmf_tone | int | 拨号时是否播放 DTMF 音(1=是,0=否) | 1 | |
| dtmf_tone_type | int | CDMA 拨号时的 DTMF 音类型(0=正常,1=长音) | 23 | |
| end_button_behavior | int | 非通话时按挂断键的行为(0=无操作,1=回主屏,2=休眠锁屏,3=回主屏或休眠) | 1 | |
| font_scale | float | 字体缩放比例 | 1 | |
| haptic_feedback_enabled | int | 是否启用触觉反馈(点击振动,1=启用,0=禁用) | 3 | 33 |
| mode_ringer_streams_affected | int | 受响铃模式影响的音频流位掩码 | 1 | |
| mute_streams_affected | int | 受静音影响的音频流位掩码 | 1 | |
| notification_sound | string | 系统默认通知提示音的 URI | 1 | |
| ringtone | string | 系统默认来电铃声的 URI | 1 | |
| screen_brightness | int | 屏幕亮度值(1~255) | 1 | |
| screen_brightness_mode | int | 亮度模式(0=手动,1=自动) | 8 | |
| screen_off_timeout | int | 屏幕超时休眠时间(毫秒) | 1 | |
| setup_wizard_has_run | int | 设置向导是否已运行(非零表示已运行) | 1 | |
| show_gtalk_service_status | int | 是否显示 GTalk 服务状态 | 1 | |
| sound_effects_enabled | int | 是否启用声音效果(按键音等,1=启用) | 1 | |
| text_auto_caps | int | 文本编辑器是否自动大写(1=开) | 1 | |
| text_auto_punctuate | int | 文本编辑器是否自动标点(1=开) | 1 | |
| text_auto_replace | int | 文本编辑器是否自动替换(1=开) | 1 | |
| text_show_password | int | 文本编辑器是否显示密码字符(1=显示) | 1 | |
| time_12_24 | string | 时间显示格式("12" 或 "24",未设置则用区域默认) | 1 | |
| user_rotation | int | 默认屏幕旋转角度(Surface 旋转常量) | 11 | |
| vibrate_on | int | 是否启用振动(内部使用,实际振动由 AudioManager 控制) | 1 | |
| vibrate_when_ringing | int | 来电时是否振动(1=振动,0=不振动) | 23 | 33 |
Secure¶
| 字段名(小写) | 类型 | 描述 | 加入版本 | 移除版本 |
|---|---|---|---|---|
| accessibility_display_inversion_enabled | int | 是否启用显示颜色反转。 | 21 | |
| accessibility_enabled | int | 是否启用无障碍功能。 | 4 | |
| accessibility_speak_password | int | 是否在无障碍模式下朗读密码(已弃用,由各无障碍服务控制)。 | 15 | 26 |
| allowed_geolocation_origins | string | 浏览器默认允许地理位置的原址列表(空格分隔)。 | 8 | |
| allow_mock_location | int | 是否允许模拟位置(已弃用,不再使用)。 | 3 | 23 |
| android_id | string | 设备唯一的 Android ID(64 位十六进制字符串,Android 8.0+ 作用域变化)。 | 3 | |
| default_input_method | string | 当前默认输入法的组件名(ComponentName 扁平化字符串)。 | 3 | |
| enabled_accessibility_services | string | 已启用的无障碍服务列表(字符串格式)。 | 4 | |
| enabled_input_methods | string | 已启用的输入法列表(冒号分隔,格式含子类型)。 | 3 | |
| input_method_selector_visibility | int | 输入法选择器的可见性记录。 | 11 | |
| install_non_market_apps | int | 是否允许安装非市场应用(1=允许,0=禁止;API 26+ 应使用 PackageManager.canRequestPackageInstalls())。 | 3 | 26 |
| location_mode | int | 当前位置模式(整数值;API 28+ 建议使用 LocationManager.isLocationEnabled())。 | 19 | 28 |
| lock_pattern_enabled | int | 是否启用锁屏图案(0=否,1=是;API 23+ 建议使用 KeyguardManager)。 | 8 | 23 |
| lock_pattern_visible | int | 是否显示锁屏图案连线(0=否,1=是;API 23+ 读取会抛 SecurityException)。 | 8 | 23 |
| parental_control_enabled | int | 是否启用家长控制(已不再支持)。 | 3 | |
| parental_control_last_update | string | 家长控制最后更新时间(已不再支持)。 | 3 | |
| parental_control_redirect_url | string | 家长控制重定向 URL(已不再支持)。 | 3 | |
| rtt_calling_mode | int | 是否启用 RTT 通话模式(0=关闭,1=开启)。 | 28 | |
| secure_frp_mode | int | 是否处于受限的 FRP(恢复出厂设置保护)模式(0=否,1=是)。 | 30 | 34 |
| selected_input_method_subtype | string | 选中的输入法子类型 ID。 | 11 | |
| settings_classname | string | 设置应用的类名。 | 3 | |
| skip_first_use_hints | int | 是否跳过首次使用提示(0=显示提示,1=跳过)。 | 21 | |
| touch_exploration_enabled | int | 是否启用触摸探索(无障碍功能)。 | 14 | |
| tts_default_pitch | int | 默认 TTS 音调(100 = 1x)。 | 4 | |
| tts_default_rate | int | 默认 TTS 语速(100 = 1x)。 | 4 | |
| tts_default_synth | string | 默认 TTS 引擎(包名)。 | 4 | |
| tts_enabled_plugins | string | 启用的 TTS 插件列表(空格分隔)。 | 8 |