что такое uri, contentValues

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

  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();
    values.put("calendar_id", 1);
    values.put("title", str);
    values.put("description", m_strDescription);

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

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

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

    Опять values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

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


person AndroidDev    schedule 15.09.2011    source источник


Ответы (2)


Что касается вопросов 1 и 2, A Uri — это адрес, который указывает на что-то важное. В случае ContentProviders Uri обычно используется для определения используемой таблицы. Таким образом, event_uri указывает на таблицу событий, а reminder_uri указывает на таблицу напоминаний. Для uris действительно нет «значения по умолчанию».

Что касается вопроса 3, ContentValues по сути представляет собой набор пар ключ-значение, где ключ представляет собой столбец для таблицы, а значение — это значение, которое должно быть вставлено в этот столбец. Таким образом, в случае values.put("calendar_id", 1); столбец "calendar_id" и значение, вставляемое для этого столбца, равно 1.

Что касается вопроса 4, ContentResolver - это то, что андроид использует для преобразования Uris в ContentProviders. Любой может создать ContentProvider, а Android имеет ContentProvider для календаря, контактов и т. д. Метод insert() для ContentResolver возвращает Uri вставленной строки. Таким образом, в вопросах 1 и 2 эти Uri указывают на таблицу, но Uri являются иерархическими, поэтому они могут разрешаться в определенную строку. Например:

content://com.android.calendar/events указывает на таблицу событий, но

content://com.android.calendar/events/1 указывает на строку в таблице событий с идентификатором 1.

Имейте в виду, что это обычное поведение, но предоставляющий ContentProvider может настроить разрешение URI по-разному.

Я настоятельно рекомендую прочитать документацию ContentProvider, особенно раздел URI контента.


Из ранее рекомендованной документации:

В предыдущих строках кода полный URI для таблицы «слова»:

content://user_dictionary/words

где строка user_dictionary — это полномочия провайдера, а строка words — это путь к таблице. Строка content:// (схема) присутствует всегда и определяет ее как URI контента.

person Noel    schedule 20.09.2011

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


}
person Faakhir    schedule 20.09.2012