Подтвердить что ты не робот

Что такое uri, contentValues

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

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

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

  • ContentValues values = new ContentValues();
    values.put("calendar_id", 1);
    values.put("title", str);
    values.put("description", m_strDescription);

    Что делает первый? values.put("calendar_id", 1);

  • 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);

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

4b9b3361

Ответ 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 - это путь к таблице. string content:// (схема ) всегда присутствует и идентифицирует эту как URI контента.

Ответ 2

ContentValues:

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)
    ....
    ....
    ....


}