Все четыре метода принимают первым параметром объект класса 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 календарей могут быть использованы для получения или добавления событий в пользовательский календарь.