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