Все четыре метода принимают первым параметром объект класса Uri, который позволяет определить какой ContentProvider будет использован.
Метод
query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
– аналогичен запросу SELECT в SQL и используется для получения данных. Разберем параметры этого метода:
projection
– массив имен колонок таблицы, которые будут возвращены в результате запроса. selection
– аналогичен WHERE в SQL. Задает условие, по которому выбираются данные из таблицы, например: "_id = ?"
. selectionArgs
– массив аргументов, которые используются в selection
. Каждый знак вопроса в строке selection
будет заменен на аргумент из массива selectionArgs
.sortOrder
– аналогичен ORDER BY в SQL. Задает порядок, в котором будут возвращены результаты запроса. Например: "_id ASC"
– по возрастанию значения id.Пример использования метода
query()
:val projection = arrayOf("_id", "calendar_access_level", "visible")
val selection = "calendar_access_level = ? AND visible = ?"
val selectionArgs = arrayOf(Calendars.CAL_ACCESS_OWNER.toString(), "1")
val sortOrder = "_id ASC"
val result = query(Calendars.CONTENT_URI, projection, selection, selectionArgs, sortOrder)
CAL_ACCESS_OWNER – константа, определяющая уровень доступа owner.
"1"
для параметра "visible"
соответствует булевому значению true
.Такой код соответствует следующему
SQL
запросу: SELECT id, calendar_access_level, visible, is_primary
FROM content://com.android.calendar/calendars
WHERE calendar_access_level=700 AND visible=1 AND is_primary=1
ORDER BY id ASC
Этот запрос возвращает все календари пользователя, к которым он имеет owner доступ. Далее
id
календарей могут быть использованы для получения или добавления событий в пользовательский календарь.