Как стать автором
Поиск
Написать публикацию
Обновить

Опыт устранения раздражителя с приобретением опыта

Приветствую хабражителей.

Являюсь счастливым обладателем LG Optimus One. Счастливым потому, что андроидофон дешевый и все мои потребности удовлетворяет на ура. Но есть и неприятный момент. Был.

Довольно частая (если не постоянная) практика у производителей гаджетов напичкивать заводскую прошивку сторонними сервисами, широко использующимися в регионе. С технической точки зрения все вполне вменяемо: производитель закидывает .apk в прошивку наряду с родными для Android в r/o папку. Виджеты и приложения еще можно удалить либо с помощью uninstaller'ов, коих полно в Market, либо руками с помощью Root Explorer и т. п. Но вот залоченные на удаление закладки в стандартном браузере (а он мне нравится больше, чем Opera и Firefox) – это явное навязывание. Конечно, использованию браузера не мешают, но меня, как любителя порядка и чистоты (ярого), раздражал факт их присутствия. Под катом — легкий и простой способ избавления от них, а также легкая практика работы с SQLite.

Для начала, нужно было найти, где хранятся закладки браузера, ну и вообще данные приложений. Конечно, можно было долго бродить по директориям файловой системы гаджета с помощью Root Explorer, но, будучи уверенным пользователем Linux, я поставил эмулятор терминала с Market'a и набил “ls -R /”. 5 минут от поездки метро было достаточно, чтобы найти то, что нужно, а именно /data/data/. Конкретно от браузера требовалась БД /data/data/com.android.browser/databases/browser.db. Просмотрев базу встроенным в Root Explorer средством, сразу обнаружилась таблица bookmarks (в ней вообще вся история хранится, а «закладковость» записи флажком меняется). Просмотрев саму таблицу, дальнейший порядок действий я понял:

image

(ненавистными блокированными закладками были погода, расписания электричек, новости и т. п. от Яндекса, для статьи же восстановил примерную картину)

Такая картина в таблице давала следующую картину в браузере:

image image

Режем

На Market'e присутствуют редакторы SQLite баз, но авторы просят денег. Заглядываю на сайт SQLite и нахожу то, что мне нужно.

Качаем уже собранный бинарник консоли, распаковываем в рабочую папку. В нее же скидываем browser.db (я перекидывал из файловой системы смартфона на флешку, потом с нее на ПК).

Работаем с базой:

D:\Downloads>sqlite3.exe browser.db.old
SQLite version 3.7.6.3
Enter ".help" for instructions
Enter SQL statements terminated with a ";"


После загрузки базы из файла она доступна под именем main:

sqlite> .databases
seq name file
----------------------------------------------------------------------
0 main D:\Downloads\browser.db.old
1 temp


Для верности:

sqlite> .tables
android_metadata bookmarks delete_bookmarks searches


Формируем запрос (справка на сайте SQLite). Смотрим id залоченной закладки и подставляем:

sqlite> delete from `bookmarks` where `_id`=1;

Сохраняем базу в файл. По умолчанию будет сохранена база main, при работе с несколькими можно указать другую (см. .help):

sqlite> .backup browser.db

Хлопаем дверью:

sqlite> .quit

Вот и все. Закидываем базу данных на свое место, перезагружаем браузер и радуемся чистоте и порядку.

Послесловие

Избавившись от не дающих спокойно жить навязанных закладок, получил базовый навык формирования SQL-запросов и опыт работы с консолью SQLite. Приятно, полезно. Ну и просто just for fun :)

Использовались материалы:
Об Android на Wiki (не знал же с рождения, что в Android используется SQLite)
Справочник SQLite по синтаксису SQL
И, собственно, примерное представление того, как оно внутри устроено
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.