Что такое URI, ContentValues - PullRequest
       18

Что такое URI, ContentValues

30 голосов
/ 15 сентября 2011

Может ли кто-нибудь объяснить мне каждый термин, который я использовал при работе с календарными событиями?

  1. Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
    Что такое URI, что на самом деле является контентом, так как мы можем инициализировать значение int равным 0? Это
    Можно ли инициализировать URI со значением по умолчанию?

  2. Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
    Что означает эти URI? В чем различия между event_uri и reminder_uri?

  3. ContentValues values = new ContentValues();<br> values.put("calendar_id", 1);<br> values.put("title", str);<br> values.put("description", m_strDescription);
    Что делает первый? values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    Какая польза от преобразователя контента? Иногда мы пишем:

    Uri u = cr.insert(event_uri, values)
    Что это за Ури? Чем он отличается от первых двух Uris, например event_uri и reminder_uri

    Снова values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    Что это делает?

Ответы [ 2 ]

54 голосов
/ 21 сентября 2011

Что касается вопросов 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 содержимого.

0 голосов
/ 20 сентября 2012

Значения содержимого:

public final class
ContentValues
extends Object
implements Parcelable have public methods
like: String getAsString(String KEY) , void put(Sring KEY, String value)
e.g.

public void createEntry(String name, String number){
    ContentValues cval = new ContentValues();
    cval.put(KEY_NAME, name);   // KEY_NAME is key just like parameter in put(String key)
    ....
    ....
    ....


}
...