Ответ 1
Что касается вопросов 1 и 2, A Uri
- это адрес, который указывает на что-то значимое. В случае ContentProvider
s Uri
обычно используется для определения используемой таблицы. Поэтому event_uri
указывает на таблицу событий, а reminder_uri
указывает на таблицу напоминаний. Фактически нет значения по умолчанию для uris.
Что касается вопроса 3, ContentValues
представляет собой по существу набор пар ключ-значение, где ключ представляет столбец для таблицы, а значение - значение, которое должно быть вставлено в этот столбец. Поэтому в случае values.put("calendar_id", 1);
столбец "calendar_id", а значение для этого столбца равно 1.
Что касается вопроса 4, то ContentResolver
- это то, что андроид использует для решения Uri
- ContentProvider
s. Любой может создать ContentProvider
, а Android имеет ContentProvider
для Календаря, контактов и т.д. Метод insert()
на ContentResolver
возвращает Uri
вставленной строки. Поэтому в вопросах 1 и 2 те Uri
указывали на таблицу, но Uri
являются иерархическими, поэтому они могут разрешать определенную строку. Например:
content://com.android.calendar/events
указывает на таблицу событий, но
content://com.android.calendar/events/1
указывает на строку в таблице событий с идентификатором 1.
Имейте в виду, что это обычное поведение, но предоставление ContentProvider
может настраивать uris для решения по-разному.
Я настоятельно рекомендую прочитать Документы ContentProvider, особенно раздел URI контента.
Из ранее рекомендованной документации:
В предыдущих строках кода полный URI для таблицы "слова":
content://user_dictionary/words
где строка
user_dictionary
полномочие поставщика и строкаwords
- это путь к таблице. stringcontent://
(схема ) всегда присутствует и идентифицирует эту как URI контента.