Главная » Разработка для Android » ПОЛНЫЙ КОД ПОСТАВЩИКА СОДЕРЖИМОГО: ПОСТАВЩИК SIMPLEFINCHVIDEOCONTENTPROVIDER в Android приложении

0

 

Теперь, когда мы поговрорили о важных задачах, связанных с написанием поставщика содержимого с применением паттерна «Модель-вид-контроллер» в Android (то есть о системе обмена информацией, используемой поставщиками содержимого в Android), рассмотрим, как написать собственный поставщик содержимого. Класс SimpleFinchVideoContentProvider наследуется ContentProvider так:

Класс SimpleFinchVideoContentProvider и переменные экземпляров

Как обычно, лучше сначала разобраться с основными переменными классов, используемыми методом, а потом изучать, как этот метод работает. Для работы с Sim pi eFinchVideoContentProvider нам понадобится освоить следующие члены класса:

DATABASE_NAME – имя файла базы данных, расположенной на устройстве. В случае с простым видеоприложением Finch путь к файлу базы данных будет таким: /data/data/com.oreilly.demo.pa. finchvideo/databases/simplej/ideo.db.

DATABASE_VERSION – версия базы данных, соответствующая этому коду. Если номер выше, чем версия самой базы данных, то приложение вызывает метод DatabaseHelper.onUpdate.

VIDEO_TABLE_NAME – имя таблицы видео, находящейся внутри базы данных sіmplе_video.

mOpenHelper – переменная вспомогательной утилиты базы данных. Такая переменная инициализируется во время работы метода onCreate. Этот помощник обеспечивает доступ к базе данных для методов іnsert, query, update и del ete.

sUriMatcher – статический блок инициализации, в котором осуществляется инициализация статических переменных, если эти переменные не удается инициализировать в одной строке. Например, работа нашего простого поставщика видео начинается с добавления соответствий содержимого, йоставщика и URI в UriMatcher, вот так:

Класс UriMatcher является базовой утилитой, используемой в Android для отображения URI поставщиков содержимого. Для применения экземпляра этого класса его нужно заполнить отображениями строки URI, например videos, на константу. Наше отображение действует следующим образом. Сначала приложение передает аргумент, UriMatcher.NO_MATCH, конструктору класса UriMatcher, относящегося к поставщику содержимого, чтобы определить значение, соответствующее ситуации, в которой заданный URI не совпадает ни с одним имеющимся URI. Затем приложение добавляет отображения для множества видео к константе VIDEOS, а потом – отображение конкретного видеоролика к константе VIDEO_ID. При отображении всех URI поставщика содержимого на целочисленное значение, поставщик содержимого может применить оператор switch для перехода к коду, используемому для обработки нескольких видеофайлов или одного видеофайла.

В результате этого процесса такой URI, как content://com. oreilly.demo.pa .finch video. SimpleFinchVideo/video, ассоциируется с константой VIDEOS, соответствующей всем видеофайлам. URI отдельной видеозаписи, например content:// oreilly. demo. pa. fіnchvideo. Simple FinchVideo/video/7, ассоциируется с константой VIDEO_ID, соответствующей одному видеофайлу. Хеш-символ (#) в конце обнаружителя совпадений URI – это джокерный символ для любого URI, оканчивающегося на целое число.

sVideosProjectionMap – проекционный контейнер, используемый в методе запроса. Этот HashMap ассоциирует имена столбцов поставщика содержимого с именами столбцов базы данных. Пользоваться проекционным контейнером не обязательно, но если он применяется, то, в нем должны содержаться все имена столбцов, которые могут быть возвращены в запросе. В случае с SimpleFinchVideoContentProvider имена столбцов поставщика содержимого и базы данных идентичны, поэтому sVideosProjectionMap не требуется. Но мы покажем примеры приложений, где такой контейнер нужен. В следующем коде создается пример проекционного ассоциирования:

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии