Может кто-нибудь объяснить SQLiteOpenHelper getType - PullRequest
1 голос
/ 24 августа 2010

Я пытаюсь реализовать базу данных в моем приложении. Я следую руководству по написанию своего собственного ContentProvider, но я запутался в SQLiteOpenHelper :: getType. Мы должны написать его и, по сути, написать переключатель, который возвращает тип MIME, соответствующий типу данных, с которыми мы имеем дело.

Я не до конца понимаю. Я не уверен, хотя у меня есть пример, что именно должно быть передано здесь. Как определить тип MIME для разных таблиц данных? Может ли кто-нибудь дать мне хорошее объяснение этому?

учебник

1 Ответ

6 голосов
/ 25 августа 2010

Я пытаюсь реализовать базу данных в своем приложении.

Это не имеет ничего общего с 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 может найти подходящее действие, которое может обработать запрос.

...