Знакомство с поставщиками, встроенными в Android

Знакомство с поставщиками, встроенными в Android

Android поставляется с набором встроенных поставщиков контента, которые перечислены в Java-пакете android.provider из SDK. Этот список можно увидеть на странице developer.android.com/reference/android/provider/package- summary.html.

В состав поставщиков входят, например, Contacts и MediaStore. Эти базы данных SQLite обычно имеют расширение .db и доступны только из пакета реализации. Любые обращения извне такого пакета должны проходить через интерфейс поставщика контента.

Базы данных в эмуляторе и на доступных устройствах

Поскольку многие поставщики контента в Android используют базы данных SQLite (www.sqlite.org), для просмотра их содержимого можно применять средства как из Android, так и из SQLite.

Многие из таких средств находятся в подкаталоге \каталог-установки-аид.го1д.- sdk\tools, а другие — в\каталог-установки-android-sdk\platform-tools.

На заметку! Информацию о местоположении каталогов tools и открытии окна командной строки в различных операционных системах можно найти в главе 2. В этой главе, как и в большинстве последующих глав, примеры предоставляются в основном для платформы Windows. При чтении этого раздела, где используется ряд средств командной строки, обращайте внимание на имена исполняемых или пакетных файлов, и не задумывайтесь о каталоге, в котором они находятся. Настройка пути для каталогов инструментальных средств на различных платформах описана в главе 2.

В Android имеется утилита командной строки Android Debug Bridge (adb), которая расположена по следующему пути: platform-tools\adb.exe. Это специальная утилита из набора инструментальных средств Android, которая используется большинством других средств для доступа к устройству. Однако для обращений к устройству необходимо, чтобы на нем выполнялся эмулятор. Узнать, на чем вы работаете — на устройстве или на эмуляторе — можно, выполнив в командной строке следующую команду:

adb devices

Если эмулятор не запущен, его можно запустить с помощью такой команды:

emulator.exe @avdname

96 Глава 4. Поставщики контента

В аргументе @avdname необходимо указать имя виртуального устройства Android (Android Virtual Device — AVD). (Виртуальные устройства Android и способы их создания описаны в главе 2.) Чтобы узнать, какие виртуальные устройства имеются в наличии, можно выполнить следующую команду:

android list avd

Эта команда выводит список доступных устройств AVD. Если вы разработали и запускали какие-то Android-приложения с помощью Eclipse Android Development Tool (ADT), то у вас уже сконфигурировано, по крайней мере, одно виртуальное устройство. Так что вышеприведенная команда выведет это устройство.

Эмулятор можно также запустить с помощью подключаемого модуля Eclipse ADT. Это автоматически происходит при указании программы для выполнения или отладки на эмуляторе. Когда эмулятор будет запущен, можно снова просмотреть список запущенных устройств, введя следующую команду:

adb devices

Теперь на выходе будут примерно такие данные:

List of devices attached

emulator-5554 device

Список параметров и команд, которые можно выполнить с помощью adb, можно вывести следующей командой:

adb help

Кроме того, множество параметров времени выполнения для adb можно просмотреть по адресу developer.android.com/guide/developing/tools/adb.html.

Утилита adb позволяет открыть командную оболочку на подключенном устройстве:

adb shell

На заметку! В качестве оболочки используется ash из Unix — правда, с урезанным набором команд. К примеру, в ней имеется команда ls, но нет find, grep и awk.

На заметку! В Android базы данных могут создаваться при первом обращении к ним. Это означает, что такой файл можно и не увидеть, если не выполнялось приложение работы с контактами.

Если бы в оболочку ash была включена команда find, можно было бы найти все .db-файлы. Но при наличии одной лишь команды ls удобный способ решения этой задачи отсутствует. Лучшее, что можно сделать — выдать такую команду:

ls -R /data/data//databases

Эта команда позволяет увидеть, что в дистрибутиве Android имеются следующие базы данных (опять-таки, в зависимости от выпуска этот список может быть несколько другим):

alarms.db

contacts.db

downloads.db

internal.db

settings.db

mmssms.db

telephony.db

Вы, возможно, уже поняли, что таблица sqlite_master является главной таблицей, в которой хранятся сведения о таблицах и представлениях базы данных. Следующая команда выводит оператор create для таблицы people в базе contacts.db:

.schema people

Это один из способов получения имен столбцов для таблицы в SQLite. Кроме того, данная команда выводит и типы столбцов. При работе с поставщиками контента эти типы столбцов нужны для определения методов доступа.

Но это все-таки утомительно — вручную просматривать длинный оператор create, чтобы просто узнать имена и типы столбцов. Существует более простой способ: можно скопировать файл contacts.db на свой локальный компьютер и исследовать его там с помощью нескольких графических инструментов для SQLite версии 3. Извлечь файл contacts.db можно с помощью такой команды:

adb pull /data/data/com.android.providers.contacts/databases/contacts.db C:/somelocaldir/contacts.db

Нам понравилось графическое средство Sqliteman (sqliteman.com/) для баз данных SQLite, которое работает довольно устойчиво. Несколько раз программа завершалась аварийно, но в остальном вполне справлялась с анализом баз данных SQLite в Android.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий