Ответ
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")
}
}
Для создания своего провайдера нужно:
- Наследоваться от ContentProvider
- Реализовать CRUD методы
- Объявить в манифесте с authorities
- Определить URI схему через UriMatcher