Я пытаюсь реализовать базу данных в своем приложении. Я следую учебному пособию о написании собственного ContentProvider, но я запутался в SQLiteOpenHelper:: getType. Мы должны написать его и, по сути, написать переключатель, который возвращает тип MIME, соответствующий типу данных, с которыми мы имеем дело.
Я не совсем понимаю это. Я не уверен, хотя у меня есть пример, что именно предполагается передать здесь. Как определить тип MIME для разных таблиц данных? Может ли кто-нибудь дать мне хорошее объяснение этому?
Я пытаюсь реализовать базу данных в своем приложении.
Это не имеет ничего общего с ContentProvider
. A ContentProvider
не нужно использовать базу данных; база данных не должна быть скрыта с помощью ContentProvider
.
Я следую учебнику о написании собственного ContentProvider, но я смущен SQLiteOpenHelper:: GetType.
Нет метода getType()
на SQLiteOpenHelper
. Я собираюсь предположить, что вы ссылаетесь на getType()
на ContentProvider
.
то, что именно предполагается передать здесь
Um... тип MIME.
Как определить тип MIME для разных таблиц данных?
Для базы данных вы, вероятно, изобретаете свои собственные типы MIME. Имейте в виду, что ContentProvider
используется не только для структуры табличного стиля - он также может использоваться для возврата файлов. В этом случае вы попытаетесь использовать типы MIME, соответствующие соответствующему файлу.
Может ли кто-нибудь дать мне хорошее объяснение этому?
Предполагается, что вы просматриваете эту веб-страницу в веб-браузере. Когда вы нажали ссылку или что-то, что привело вас сюда, ваш веб-браузер сделал HTTP-запрос на веб-сервер, предоставив URI /questions/3559053/could-someone-explain-sqliteopenhelper-gettype
. Веб-сервер StackOverflow вернул содержимое страницы вместе с типом MIME самого содержимого. Эта последняя часть важна, особенно для этого URI, поскольку расширение файла отсутствует. Без типа MIME веб-браузер не знал, что делать с результатами HTTP-запроса.
Android следует той же модели.
Например, вы можете создать ACTION_VIEW
Intent
для Uri
, представляющего контакт в ContactsContract
ContentProvider
. Однако, если Android не смог определить тип MIME, вы не могли бы начать работу с использованием Intent. Android нужно спросить ContentProvider
, "yo, dawg, U gots me MIME type fo 'this Uri?". Затем, вооружившись действием (ACTION_VIEW
) и типом MIME, Android может найти соответствующее действие, которое может обрабатывать запрос.