Реализация поставщиков контента
К этому моменту уже известно, как взаимодействовать с поставщиком контента для обработки данных, но пока еще не было показано, как написать поставщик контента. А для этого нужно расширить класс android.content.ContentProvider и реализовать следующие ключевые методы:
query
insert
update
delete
getType
Но перед этим необходимо обеспечить еще несколько моментов. Мы продемонстрируем все детали реализации поставщика контента, описав необходимые для этого шаги.
- Планирование базы данных, URI, имен столбцов и т.д. и создание класса метаданных, который определяет константы для всех этих элементов метаданных.
- Расширение абстрактного класса ContentProvider.
- Реализация методов query, insert, update, delete и getType.
- Регистрация поставщика в файле манифеста.
Планирование базы данных
Для демонстрации этой темы мы создадим базу данных, в которой будет храниться коллекция книг. Эта база книг содержит только одну таблицу с именем books и столбцами name, isbn и author. Указанные имена столбцов представляют собой метаданные, и они определяются в Java-классе. Такой Java-класс BookProviderMetaData с определениями метаданных приведен в листинге 4.5. Некоторые важные элементы этого класса выделены полужирным.
Этот класс BookProviderMetaData начинается с определения источника com.androidbook.provider.BookProvider. Мы собираемся использовать эту строку для регистрации поставщика в файле манифеста Android. Она образует первую часть URI для этого поставщика.
Затем этот класс определяет свою единственную таблицу (books) в виде внутреннего класса BookTableMetaData. Далее BookTableMetaData определяет URI для идентификации коллекции книг. Для источника из предыдущего абзаца URI коллекции книг будет выглядеть следующим образом:
content://com.androidbook.provider.BookProvider/books
Этот URI обозначается константой
BookProviderMetaData.BookTableMetaData.CONTENT URI
После этого класс BookTableMetaData определяет MIME-типы для коллекции книг и одиночной книги. Эти константы будут использованы в реализации поставщика для возврата MIME-типов для входящих URI.
Далее в классе BookTableMetaData определяется набор столбов: name (название), isbn (номер ISBN), author (автор), created (дата создания) и modified (дата последнего изменения).
На заметку! Типы данных для столбцов должны быть указаны в комментариях кода.
Кроме того, класс метаданных BookTableMetaData наследует от класса BaseColumns стандартное поле _id, представляющее идентификатор строки. Теперь, имея все эти определения метаданных, можно приступать к реализации поставщика.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.