Продвинутые техники в работе с Андроидом: различия между версиями
Нет описания правки |
Zombah (обсуждение | вклад) м (add insert example) |
||
Строка 77: | Строка 77: | ||
* Теперь можем менять значения или добавлять новые | * Теперь можем менять значения или добавлять новые | ||
Пример добавления записи в таблицу | |||
<pre> | |||
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO secure (name, value) VALUES ('wifi_country_code', 'EU');" | |||
</pre> |
Версия от 12:39, 6 июля 2015
Полезные заметки
Android properties
Андроид использует для хранения разных переменных окружения так называемые _properties_, смысл их похож на регистри вин32 систем. На работающей системе поменять существующее значение проперти нельзя, чтобы изменения применились нужно перезапускать систему, но можно создать новую ключевую пару.
Проперти хранятся в системе в нескольких файлах, обычно это /system/build.prop и /default.prop, также некторые проперти могут применяться из init файлов системы /init.rc и /init.paz00.rc
Из терминала можно посмотреть целиком список всех текущих значений коммандой getprop, а создать новое временное значение коммандой setprop
Чтобы значение осталось и после перезагрузки его нужно прописать в /system/build.prop предварительно разрешив запись в эту файловую систему
Изменение глобальных параметров системы
При формировании сборки системы Андроид многие глобальные параметры будущей системы задаются через так называемые оверлеи с конфигами в xml формате, о них подробнее тут Overlays
В уже работающей системе их также можно поменять, напрямую поправив значение в базе данных. Ниже рассмотрим как это сделать:
- Подключаемся к базе из терминала
cd /data/data/com.android.providers.settings/databases/ su -c sqlite3 settings.db
- Смотрим какие там существуют базы
SQLite version 3.7.4 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /data/data/com.android.providers.settings/databases/settin sqlite>
- Смотрим какие есть таблицы в базе
sqlite> .schema CREATE TABLE android_metadata (locale TEXT); CREATE TABLE bluetooth_devices (_id INTEGER PRIMARY KEY,name TEXT,addr TEXT,channel INTEGER,type INTEGER); CREATE TABLE bookmarks (_id INTEGER PRIMARY KEY,title TEXT,folder TEXT,intent TEXT,shortcut INTEGER,ordering INTEGER); CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT); CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT); CREATE INDEX bookmarksIndex1 ON bookmarks (folder); CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut); CREATE INDEX secureIndex1 ON secure (name); CREATE INDEX systemIndex1 ON system (name);
- Смотрим содержимое таблицы system
sqlite> select * from system; 2|volume_ring|5 3|volume_system|7 4|volume_voice|4 5|volume_alarm|6 6|volume_notification|5 7|volume_bluetooth_sco|7 8|mode_ringer|2 9|vibrate_on|10 10|mode_ringer_streams_affected|174 11|mute_streams_affected|46 12|dim_screen|1 13|stay_on_while_plugged_in|0 15|emergency_tone|0 16|call_auto_retry|0 ... ...
- Теперь можем менять значения или добавлять новые
Пример добавления записи в таблицу
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO secure (name, value) VALUES ('wifi_country_code', 'EU');"