Middle
Šta je Content Provider i kako se koristi u Androidu?
sobes.tech АИ
Одговор од АИ
Content Provider је један од градивних блокова Android-а (компонента Application Component), који пружа стандардизован интерфејс за приступ и управљање структурираним подацима. Он делује као посредник између апликације и извора података (на пример, SQLite база података, фајлови, мрежни подаци).
Користи се за:
- Заједнички приступ подацима: Омогућава различитим апликацијама безбедан приступ истим подацима, без директног приступа основном извору података.
- Управљање дозволама: Омогућава контролу које апликације имају приступ подацима и које операције (читати, писати, ажурирати, брисати) могу извршити.
- Абрација извора података: Скрива детаље реализације извора података од клијената, поједностављујући приступ подацима.
- Интеграција са Android Framework-ом: Користе се компоненти као што су
CursorLoaderза асинхроно учитавање података у UI, иSyncAdapterза синхронизацију података.
Основне методе Content Provider-а:
// Извршава упит према провајдеру и враћа Cursor
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
// Убацује нови запис у провајдер и враћа URI новог записа
public Uri insert(Uri uri, ContentValues values);
// Ажурира постојеће записе у провајдеру и враћа број ажурираних редова
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
// Брише записе из провајдера и враћа број избрисаних редова
public int delete(Uri uri, String selection, String[] selectionArgs);
// Враћа MIME тип података за датий URI
public String getType(Uri uri);
// Иницијализује провајдера приликом његовог креирања
public boolean onCreate();
URI за приступ Content Provider-у има следећи формат:
content://authority/path segment/id
где:
content://— стандардна шема за Content Providers.authority— јединствени низ који идентификује Content Provider (обично назив пакета апликације или његов део).path segment— опциони део који указује на одређену табелу или скуп података.id— опциони део који указује на одређени запис у скупу података.
Пример коришћења ContentResolver за интеракцију са Content Provider-ом:
// Добијање инстанце ContentResolver
ContentResolver resolver = getContentResolver();
// URI за приступ подацима (нпр., системски провајдер контаката)
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// Извршавање упита
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
// Обрада резултата (обилазак курсора)
if (cursor != null && cursor.moveToFirst()) {
// ... читање података из курсора ...
cursor.close(); // Увек затварајте курсор!
}
Регистрација Content Provider-а у AndroidManifest.xml:
<provider
android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="true"
android:readPermission="com.example.myapp.permission.READ_DATA"
android:writePermission="com.example.myapp.permission.WRITE_DATA" />