Может кто-нибудь объяснить SQLiteOpenHelper getType

1

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

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

учебник

Теги:
database
android-contentprovider

1 ответ

6
Лучший ответ

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

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

  • 0
    Спасибо за ваше объяснение. Итак, если я использую ContentResolver для запроса ContentProvider, значит ли это, что мне не нужно выполнять getType (), потому что я спрашиваю его явно с AUTHORITY? На самом деле, я использую таким образом, оставляя getType () возвращать ноль, это также работает.
  • 0
    @herbertD: «Итак, если я использую ContentResolver для запроса ContentProvider, значит ли это, что мне не нужно выполнять getType (), потому что я спрашиваю это явно с AUTHORITY?» - Я бы не рассчитывал на такое поведение, но это зависит от вас.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню