Я пытаюсь реализовать базу данных в своем приложении.
Это не имеет ничего общего с ContentProvider
. A ContentProvider
не требует использования базы данных; ContentProvider
.
база данных не должна быть скрыта
Я следую учебному пособию по написанию своего собственного ContentProvider, но я запутался
SQLiteOpenHelper :: GetType.
Нет метода getType()
для SQLiteOpenHelper
. Я предполагаю, что вы имеете в виду getType()
на ContentProvider
.
что именно здесь должно быть передано
Э-э ... тип 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
, «Эй, черт, ты собираешься MIME-тип для этого Uri?». Затем, вооружившись действием (ACTION_VIEW
) и типом MIME, Android может найти подходящее действие, которое может обработать запрос.