Приведи пример использования ContentProvider

«Приведи пример использования ContentProvider» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ContentProvider используется для обмена данными между приложениями. Пример - доступ к контактам:

// URI для доступа к контактам
val CONTENT_URI = ContactsContract.Contacts.CONTENT_URI
val PROJECTION = arrayOf(
    ContactsContract.Contacts._ID,
    ContactsContract.Contacts.DISPLAY_NAME
)

// Запрос через ContentResolver
val cursor = contentResolver.query(
    CONTENT_URI,
    PROJECTION,
    null,
    null,
    null
)

cursor?.use {
    while (it.moveToNext()) {
        val id = it.getLong(0)
        val name = it.getString(1)
        Log.d("Contacts", "ID: $id, Name: $name")
    }
}

Для создания своего провайдера нужно:

  1. Наследоваться от ContentProvider
  2. Реализовать CRUD методы
  3. Объявить в манифесте с authorities
  4. Определить URI схему через UriMatcher