Системные настройки

Вы можете использовать API Settings в FIRERPA для настройки некоторых параметров Android или чтения системных настроек. Эта функция позволяет делать много вещей, например устанавливать яркость экрана, включать/выключать режим разработчика и даже громкость рингтона. Здесь мы приведём лишь несколько простых примеров.

Вызов API

Перед началом необходимо получить экземпляр 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, этот раздел для вас. Доступные параметры этого API полностью зависят от того, какие параметры поддерживает система. Обратите внимание, что некоторые константы могут быть несовместимы в разных версиях Android, а некоторые производители добавляют собственные переменные. Вы можете найти соответствующие доступные параметры в официальной документации Android ниже и использовать их вместе с приведёнными выше API для настройки системы.

Совет

Ниже мы перечисляем доступные поля, определённые официально, однако в реальной системе таких полей гораздо больше. Вы можете использовать команду 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_enabledintВключён ли ADB (Android Debug Bridge) при подключении по USB.17
airplane_mode_onintВключён ли режим полёта.17
airplane_mode_radiosstringСписок радиоинтерфейсов, которые следует отключать при включении режима полёта, разделённый запятыми.17
always_finish_activitiesintЕсли значение не равно 0, ActivityManager немедленно завершает активности и процессы, когда они больше не нужны; при 0 используется обычный продлённый жизненный цикл.17
animator_duration_scalefloatМасштабный коэффициент для анимаций на основе Animator.17
apply_ramping_ringerintПрименять ли нарастающую громкость к мелодии входящего вызова.2933
auto_timeintАвтоматически ли устанавливать системные часы устройства в UTC (например, с помощью сигналов сотовой сети, таких как NITZ, или других источников).17
auto_time_zoneintАвтоматически ли устанавливать системное свойство часового пояса устройства (например, с помощью сигналов сотовой сети, таких как MCC, NITZ, или других механизмов, например определения местоположения).17
bluetooth_onintВключён ли Bluetooth (0 = выключен, 1 = включён).17
boot_countintКоличество загрузок устройства, подсчитываемое с API уровня 24.24
contact_metadata_sync_enabledintВключена ли синхронизация метаданных контактов (1 = включена, 0 = выключена).24
data_roamingintВключён ли роуминг данных (0 = нет, 1 = да).17
debug_appstringИмя пакета приложения, которое нужно отлаживать.17
development_settings_enabledintВключил ли пользователь параметры разработчика (0 = нет, 1 = да).17
device_namestringИмя устройства.25
device_provisionedintЗавершена ли первоначальная настройка устройства (0 = нет, 1 = да).17
http_proxystringИмя хоста и порт глобального HTTP-прокси (разделённые двоеточием).17
install_non_market_appsintРазрешена ли установка приложений не из магазина.1721
mode_ringerintРежим звонка (используется внутри системы; изменение этого значения не изменит фактический режим звонка, см. AudioManager).17
network_preferenceintПредпочтение пользователя относительно используемой сети (изменяется только службой подключения).17
radio_bluetoothstringКонстанта для указания Bluetooth-радио в списке радиоинтерфейсов для режима полёта или спутникового режима.17
radio_cellstringКонстанта для указания сотового радиоинтерфейса в списке радиоинтерфейсов для режима полёта.17
radio_nfcstringКонстанта для указания NFC-радио в списке радиоинтерфейсов для режима полёта или спутникового режима.17
radio_wifistringКонстанта для указания Wi-Fi-радио в списке радиоинтерфейсов для режима полёта или спутникового режима.17
secure_frp_modeintУказывает, находится ли устройство в ограниченном безопасном режиме FRP (защита от сброса до заводских настроек).34
show_processesintУправляет отображением индикатора использования ЦП процессами.1725
stay_on_while_plugged_inintОставаться ли устройству включённым при подключении к источнику питания (комбинируемые значения: AC, USB, беспроводная зарядка, док-станция).17
transition_animation_scalefloatМасштабный коэффициент для анимаций переходов между активностями.17
usb_mass_storage_enabledintВключён ли режим USB-накопителя.17
use_google_mailintЕсли этот параметр установлен (любое значение), все упоминания Gmail на устройстве должны быть заменены на Google Mail.17
wait_for_debuggerintЕсли значение равно 1, при запуске DEBUG_APP выполнение пользовательского кода откладывается до подключения отладчика; при 0 запуск происходит обычным образом.17
wifi_device_owner_configs_lockdownintУправляет блокировкой Wi-Fi-конфигураций, созданных приложением-владельцем устройства (только оно может их редактировать или удалять).23
wifi_max_dhcp_retry_countintМаксимальное количество повторных попыток подключения к точке доступа после неудачного получения IP-адреса по DHCP (N означает общее количество попыток N+1).17
wifi_mobile_data_transition_wakelock_timeout_msintМаксимальное время в миллисекундах удержания wakelock после отключения от Wi-Fi в ожидании установления мобильного соединения.17
wifi_networks_available_notification_onintУведомлять ли пользователя при обнаружении доступных открытых сетей.1726
wifi_networks_available_repeat_delayintЗадержка в секундах перед повторным показом уведомления о доступных Wi-Fi-сетях.1730
wifi_num_open_networks_keptintКогда количество открытых сетей превышает это значение, лишние сети удаляются по принципу наименее недавно использованных.1730
wifi_onintДолжен ли быть включён Wi-Fi (изменяется только службой Wi-Fi).17
wifi_sleep_policyintПолитика, определяющая, когда Wi-Fi переходит в спящий режим.1730
wifi_sleep_policy_defaultintЗначение для использования политики сна Wi-Fi по умолчанию (в зависимости от настройки STAY_ON_WHILE_PLUGGED_IN).1730
wifi_sleep_policy_neverintЗначение, при котором Wi-Fi никогда не переходит в спящий режим.1730
wifi_sleep_policy_never_while_pluggedintЗначение, при котором при питании от батареи используется политика по умолчанию, а при подключении к питанию Wi-Fi никогда не спит.1730
wifi_watchdog_onintВключён ли сторожевой таймер Wi-Fi.17
window_animation_scalefloatМасштабный коэффициент для обычных анимаций окон.17

System

Имя поля (нижний регистр)ТипОписаниеДобавлено в версииУдалено из версии
accelerometer_rotationintУправляет автоматическим поворотом экрана с помощью акселерометра (0 = выключено, 1 = включено).3
alarm_alertstringURI системного звука будильника по умолчанию.5
bluetooth_discoverabilityintНастройка обнаруживаемости Bluetooth (2 = обнаруживаемый и подключаемый, 1 = подключаемый, но не обнаруживаемый, 0 = ни то, ни другое).1
bluetooth_discoverability_timeoutintВремя ожидания в секундах для состояния обнаруживаемости Bluetooth.1
date_formatstringФормат даты (устарел, больше не используется).131
dtmf_toneintВоспроизводить ли тональные сигналы DTMF при наборе номера (1 = да, 0 = нет).1
dtmf_tone_typeintТип тонального сигнала DTMF при наборе в CDMA (0 = обычный, 1 = длинный).23
end_button_behaviorintПоведение кнопки завершения вызова, когда вызов не выполняется (0 = ничего не делать, 1 = перейти на главный экран, 2 = перейти в режим сна и заблокировать экран, 3 = перейти на главный экран или в режим сна).1
font_scalefloatМасштаб шрифта.1
haptic_feedback_enabledintВключена ли тактильная отдача (вибрация при нажатии, 1 = включена, 0 = выключена).333
mode_ringer_streams_affectedintБитовая маска аудиопотоков, на которые влияет режим звонка.1
mute_streams_affectedintБитовая маска аудиопотоков, на которые влияет отключение звука.1
notification_soundstringURI системного звука уведомлений по умолчанию.1
ringtonestringURI системной мелодии входящего вызова по умолчанию.1
screen_brightnessintЗначение яркости экрана (1–255).1
screen_brightness_modeintРежим яркости (0 = ручной, 1 = автоматический).8
screen_off_timeoutintВремя до выключения экрана при бездействии в миллисекундах.1
setup_wizard_has_runintБыл ли запущен мастер начальной настройки (ненулевое значение означает, что был запущен).1
show_gtalk_service_statusintПоказывать ли статус службы GTalk.1
sound_effects_enabledintВключены ли звуковые эффекты (звуки нажатий и т. п., 1 = включены).1
text_auto_capsintВключает ли текстовый редактор автоматическую установку заглавных букв (1 = вкл.).1
text_auto_punctuateintВключает ли текстовый редактор автоматическую пунктуацию (1 = вкл.).1
text_auto_replaceintВключает ли текстовый редактор автоматическую замену (1 = вкл.).1
text_show_passwordintПоказывает ли текстовый редактор символы пароля (1 = показывать).1
time_12_24stringФормат отображения времени («12» или «24»; если не задан, используется региональное значение по умолчанию).1
user_rotationintУгол поворота экрана по умолчанию (константы поворота Surface).11
vibrate_onintВключена ли вибрация (используется внутри системы; фактическая вибрация управляется AudioManager).1
vibrate_when_ringingintВибрировать ли при входящем вызове (1 = вибрировать, 0 = не вибрировать).2333

Secure

Имя поля (нижний регистр)ТипОписаниеДобавлено в версииУдалено из версии
accessibility_display_inversion_enabledintВключена ли инверсия цветов дисплея.21
accessibility_enabledintВключены ли специальные возможности.4
accessibility_speak_passwordintПроговаривать ли пароль в режиме специальных возможностей (устарело; управляется отдельными службами специальных возможностей).1526
allowed_geolocation_originsstringСписок источников, которым браузер по умолчанию разрешает доступ к геолокации (разделён пробелами).8
allow_mock_locationintРазрешено ли фиктивное местоположение (устарело, больше не используется).323
android_idstringУникальный Android ID устройства (64-битная шестнадцатеричная строка; в Android 8.0+ область действия изменена).3
default_input_methodstringИмя компонента текущего метода ввода по умолчанию (ComponentName в виде уплощённой строки).3
enabled_accessibility_servicesstringСписок включённых служб специальных возможностей (в строковом формате).4
enabled_input_methodsstringСписок включённых методов ввода (разделён двоеточиями; формат включает подтипы).3
input_method_selector_visibilityintЗапись о видимости переключателя методов ввода.11
install_non_market_appsintРазрешена ли установка приложений не из магазина (1 = разрешена, 0 = запрещена; начиная с API 26 следует использовать PackageManager.canRequestPackageInstalls()).326
location_modeintТекущий режим местоположения (целочисленное значение; начиная с API 28 рекомендуется использовать LocationManager.isLocationEnabled()).1928
lock_pattern_enabledintВключён ли графический ключ блокировки экрана (0 = нет, 1 = да; начиная с API 23 рекомендуется использовать KeyguardManager).823
lock_pattern_visibleintОтображать ли линии графического ключа блокировки экрана (0 = нет, 1 = да; при чтении на API 23+ может выбрасываться SecurityException).823
parental_control_enabledintВключён ли родительский контроль (больше не поддерживается).3
parental_control_last_updatestringВремя последнего обновления родительского контроля (больше не поддерживается).3
parental_control_redirect_urlstringURL перенаправления родительского контроля (больше не поддерживается).3
rtt_calling_modeintВключён ли режим вызовов RTT (0 = выключен, 1 = включён).28
secure_frp_modeintНаходится ли устройство в ограниченном режиме FRP (защита от сброса к заводским настройкам) (0 = нет, 1 = да).3034
selected_input_method_subtypestringИдентификатор выбранного подтипа метода ввода.11
settings_classnamestringИмя класса приложения настроек.3
skip_first_use_hintsintПропускать ли подсказки при первом использовании (0 = показывать подсказки, 1 = пропускать).21
touch_exploration_enabledintВключено ли исследование касанием (функция специальных возможностей).14
tts_default_pitchintВысота тона TTS по умолчанию (100 = 1x).4
tts_default_rateintСкорость речи TTS по умолчанию (100 = 1x).4
tts_default_synthstringДвижок TTS по умолчанию (имя пакета).4
tts_enabled_pluginsstringСписок включённых плагинов TTS (разделён пробелами).8